在Python中,我试图从“last”函数所在的目录访问文件。
例如,假设我有以下文件:
例如,假设我有以下文件:
C:/
foo.py
package/
helper.py
text.md
foo.py有:
from package import helper
helper.edit_file("text.md")
helper.py 包含:
from os.path import abspath
def edit_file(file_location):
with open(abspath(file_location), "w") as file:
file.write("This file has been written to.")
而text.md只是一个空文本文件。
当我直接从helper.py运行edit_file("text.md")
时,它能正确地写入到package/text.md中。然而,当我运行foo.py时,它并不能写入到package/text.md,而是在与foo.py相同的目录级别下创建了一个新的text.md。我猜测这是因为它正在从foo.py所在的绝对路径获取。
是否可能仅从helper.py获取绝对路径,以便无论对edit_file(file_location)
进行原始调用的位置在哪里,它都始终将写入到package/text.md?
__file__
对于主要的python程序并没有什么帮助,而只有在它导入的python文件上。也就是说,我的main.py
文件显示为main.py,没有目录位置,而导入的某些东西具有完整路径。 - JL Peyretsys.argv[1]
在主程序中可能会有所帮助,并且提醒 OP 不要将文件写入代码目录是一个非常好的建议,因为那可能是巨大的安全漏洞。 - JL Peyret