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

问题描述 投票:0回答:3

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

并正确打印当前路径。

python io visual-studio-code
3个回答
1
投票

默认情况下,相对路径相对于工作目录,即运行脚本的命令运行的目录。

如果您希望路径是脚本目录中的相对路径,则必须显式编码此行为:

import os

filepath = os.path.join(os.path.dirname(__file__), 'clayList.2203.txt')
with open(filepath, 'w',encoding='utf-8') as f:
    # ...

1
投票

在Visual Studio中运行代码时,有调试选项。其中一个是运行目录,称为“工作目录”。 (右键单击您的项目并转到设置)。

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

enter image description here


0
投票

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

例如你的pwd是父,你的脚本在parent / child1 / child2 / script.py中,那么要创建的文件的路径应该是./child1/child2/clayList.2203.txt

© www.soinside.com 2019 - 2024. All rights reserved.