脚本将文件写入错误的目录

时间:2019-03-22 15:28:47

标签: python io visual-studio-code

我刚刚在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])

它会正确打印当前路径。

3 个答案:

答案 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中运行代码时,有调试选项。 其中之一是运行目录,称为“工作目录”。 (右键单击您的项目,然后转到设置)。

要从子目录运行,您需要更改它。 如果要从子目录开始,请在此处显示的“工作目录”中键入该子目录:

enter image description here

答案 2 :(得分:0)

用于创建文件的路径应相对于执行目录

例如您的pwd为父级,而脚本位于parent / child1 / child2 / script.py中,则要创建的文件的路径应为./child1/child2/clayList.2203.txt