假设程序要求用户输入要读取的文件名,然后输入要处理的数据的文件。导入不在当前工作目录中的文件
是否有一种方式来获得所需要的文件的目录中,这样的程序可以改变当前目录使用它?还是有另一种方式来访问该文件?
假设程序要求用户输入要读取的文件名,然后输入要处理的数据的文件。导入不在当前工作目录中的文件
是否有一种方式来获得所需要的文件的目录中,这样的程序可以改变当前目录使用它?还是有另一种方式来访问该文件?
如果用户输入与目录的完整文件路径,你可以分析它(使用sys.path中),然后os.chdir()那里。
如果用户输入完整的路径,为什么你需要解析它?只需调用'open()'! –
您可以通过使用Tkinter的一个文件上传框来提示他们,而不是要求他们给它的输入使之更用户更容易。当他们选择一个文件,它会给你一个完整的文件路径。
from tkinter import filedialog
# this gives you the full file path
filepath = askopenfilename()
print filepath
# or do whatever you want with the file path
不是说要求用户在键入完整的文件路径会导致一些问题,但是从个人的经验不是每个人给你,你想(更不用说不是每个人都知道文件路径语法)输入,这个例子会减少误差。
韦尔普,这是我的第一个SO答案,所以希望我不要误会的问题,并下车到一个糟糕的开局。这里不用什么...
坦率地说,没有太多超过之前有什么意见和答案提供了可说的。虽然有"portable" ways to "ask" for a path relative to your current working directory,但这样的设计选择并不十分明确,特别是关于用户可能认为正在发生的事情。如果这都是幕后文件操作,那是一回事,但在这种情况下,我和其他人一样,建议您询问读取和写入文件的整个路径。为了完整起见,你可以用这个启动:
# responses should be of the form
# full/path/from/home/directory/to/file/my_read_and_write_files.txt
fileToReadPath = input("Provide the full path to your read file: ")
fileToWritePath = input("Provide the full path to your write file: ")
with open(fileToReadPath, 'r') as readFile, open(fileToWritePath, 'w') as writeFile:
# do stuff with your files here!
# e.g. copy line by line from readFile to writeFile
for line in readFile:
writeFile.write(line)
注意,当你完成了上下文管理器(with
)会自动关闭文件给你。对于这样简单的东西,我认为上面的链接,this section on the os module和this section on the IO itself python文档做解释你的选择和玩具的例子很好的工作。
拿到目录,将要求用户输入不只是文件名,但完整的目录路径的唯一途径。该程序不能神奇地知道该文件所在的目录。 –
好的,谢谢你的帮助! –
您是否在询问关于_importing_模块或_read_文件?这些是非常不同的东西。 –