0

假设程序要求用户读取文件名,然后要求用户将处理后的数据写入文件。

有没有办法获取所需文件的目录,以便程序可以更改当前目录以使用它?还是有其他方法可以访问该文件?

4

3 回答 3

0

Welp,这是我对 SO 的第一个答案,所以希望我不会误解这个问题并开始一个糟糕的开始。这里什么都没有...

坦率地说,没有什么比之前的评论和答案提供的更多要说的了。虽然有一些“便携式”方式可以“询问”相对于当前工作目录的路径,但这样的设计选择并不那么明确,尤其是在用户可能认为正在发生的事情方面。如果这都是幕后文件操作,那是一回事,但在这种情况下,我和其他人一样,建议您询问读取和写入文件的完整路径。为了完整起见,您可以从以下内容开始:

# 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) 会自动为您关闭文件。对于像这样的简单内容,我认为上面的链接、关于 os 模块的这一部分和关于 Python 文档的 IO 本身的这一部分在解释您的选项和玩具示例方面做得很好。

于 2016-08-30T04:18:50.927 回答
0

如果用户输入带有目录的完整文件路径,您可以解析它(使用 sys.path),然后在那里解析 os.chdir()。

于 2016-08-30T02:59:50.573 回答
0

您可以通过使用 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

并不是说要求用户输入完整的文件路径会导致问题,但从个人经验来看,并不是每个人都会给你你想要的输入(更不用说不是每个人都知道文件路径语法),这个例子会减少错误利润。

于 2016-08-30T03:15:58.967 回答