Python Forum

Full Version: Avoid hard-coded folderPath in the code (let users provide it)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am using Python 3.7, and would like to know if is there method/function to ask the user to provide a folderPath (then print or work further)?

Please see my code as .replace() is not working for me here:
#Declare Variable
filePath = ""
fileName = ""
fileFullPath = ""

filePath = input("Enter the file path: )
fileName = input("Enter the file name with extension (.txt): ")
fileFullPath = filePath.replace("\","\\") + "\\" + fileName

print("Full file address is: " + fileFullPath)
The standard module pathlib will make your life easier
from pathlib import Path
file_path = Path(input("Enter the file path: ").strip())
file_name = input('Enter the file name with extension (.txt): ').strip()
file_full_path = file_path / file_name
print("Full file address is", file_full_path)
Thank you for a quick reply! It's another way by importing some library.

However, I wanted to know if we could print the full file path/address just by my basic codes (without importing anything)? What happened to .replace() here or do I need something else or is it not possible in this scenario?

I have just started learning Python 3, and it is just a simple thought came to my mind. I googled it, but still unable to understand where is the issue/gap in my code.
(Sep-06-2018, 05:13 AM)SunOffice024 Wrote: [ -> ]It's another way by importing some library.
It is not just another way, nor some library. The pathlib module is in python's standard library, it is automatically installed when you install python. It is the result of the work of the python team who studied all the dark corners of the way system paths are handled in the Windows operating system and others. I cannot imagine a reason for not using it, besides masochism. Don't reinvent the wheel.
I have got you point!! Thank you for helping me!!! :) :)
I do agree with @Gribouillis
Can show both way,as you should have used os.path.join() in your first code.
from os import path

file_path = 'C:\\foo'  #input("Enter the file path: ")
file_name = 'test.txt'  #input("Enter the file name with extension (.txt): ")
full_path =  path.join(file_path, file_name)

print(f"Full file address is: {full_path}")

#---------------------------------------------

from pathlib import Path

file_path = Path('C:\\foo') #Path(input("Enter the file path: ").strip())
file_name =  'test.txt' #input('Enter the file name with extension (.txt): ').strip()
file_full_path = file_path / file_name
print("Full file address is", file_full_path)
Output:
Full file address is: C:\foo\test.txt Full file address is C:\foo\test.txt
So the output is the "same" almost.
If look closer at it,so is the first one a string,
and second on a Path object that show it'a a Windows Path.
>>> full_path
'C:\\foo\\test.txt'

>>> file_full_path
WindowsPath('C:/foo/test.txt')
What if need that Path object should be a string?
The right way is to use os.fspath(path) and not str.
>>>import os

>>> os.fspath(file_full_path)
'C:\\foo\\test.txt'

>>> # Can also to it without import 
>>> file_full_path.__fspath__()
'C:\\foo\\test.txt'
>>> print("@snippsat: It's awesome!! Thank you for sharing detailed knowledge for lifetime!!!")
@snippsat: It's awesome!! Thank you for sharing detailed knowledge for lifetime!!!