我刚刚在Python中遇到了奇怪的行为。
我在包含初始脚本的文件夹内的子文件夹中创建了script.py文件的副本。
最后,脚本使用以下命令将一些数据导出到.txt文件中:
with open('clayList.2203.txt', 'w',encoding='utf-8') as f:
for item in claysUniqueList:
f.write("%s\n" % item)
问题是Python将新文件写入父目录,而不是当前目录。 我用以下方法检查了路径:
print(sys.path[0])
它会正确打印当前路径。
答案 0 :(得分:1)
默认情况下,相对路径是相对于工作目录的,即从中运行运行脚本的命令的目录。
如果您希望该路径是脚本目录中的相对路径,则必须明确编码此行为:
import os
filepath = os.path.join(os.path.dirname(__file__), 'clayList.2203.txt')
with open(filepath, 'w',encoding='utf-8') as f:
# ...
答案 1 :(得分:1)
在Visual Studio中运行代码时,有调试选项。 其中之一是运行目录,称为“工作目录”。 (右键单击您的项目,然后转到设置)。
要从子目录运行,您需要更改它。 如果要从子目录开始,请在此处显示的“工作目录”中键入该子目录:
答案 2 :(得分:0)
用于创建文件的路径应相对于执行目录
例如您的pwd为父级,而脚本位于parent / child1 / child2 / script.py中,则要创建的文件的路径应为./child1/child2/clayList.2203.txt