如何正确设置输入/输出文件的路径?

时间:2017-07-11 08:56:20

标签: python

我正在研究Python项目的一部分,结构如下: project/some_folder/another_folder/my_work

在此文件夹中,包含代码的文件为run.py。 在同一文件夹中,我还有一个input_file,我从中读取一些数据,处理它,并将结果写入output_file。 所以在run.py我有类似的东西:

with open("input_file") as f:
    do_something()

with open("output_file") as f:
    store_the_result()

当我在project/some_folder/another_folder/my_work中执行代码时,这很好用。 但是,当我转到project并使用python -m some_folder.another_folder.my_work.run运行代码时,我将无法访问输入文件。 我试图通过使用文件的aboslute路径来解决这个问题,但这只能在我的机器上运行。如果有人将我的代码复制到他/她的机器上,他/她仍然需要修改硬编码的绝对路径。

如何设置文件的路径,以便我可以在包含输入和输出文件的文件夹中启动程序,或者将其作为模块运行,其他人在运行时不需要修改文件的路径他们机器上的代码?

2 个答案:

答案 0 :(得分:4)

您可以获取正在运行的模块的路径,然后从那里创建一个完整的路径:

import os

module_path = os.path.dirname(os.path.realpath(__file__))

input_path = os.path.join(module_path, 'input_file')
output_path = os.path.join(module_path, 'output_file')

with open(input_path) as f:
    do_something()

with open(output_path) as f:
    store_the_result()

答案 1 :(得分:0)

如果未明确指定“input_file”路径,则Python假定它位于执行Python脚本的当前目录中。 Paco H给出的答案应该可以解决问题。