首页 > 解决方案 > 为什么python程序在我将文件移动到另一个目录后继续写入它最初所在的目录?

问题描述

我有 2 个目录。我有一个位于 dir_1 的 python 程序也在 dir_1 中写入一个 .txt 文件。我打算在 dir_2 中创建它们,但是当我将它们都移动到 dir_2 时,python 程序不是写入现在在 dir_2 中的现有 .txt 文件,而是在 dir_1 中创建一个新的 .txt 文件并写入它. 我该如何解决?我对编程非常陌生,python 和谷歌搜索并没有帮助我,可能是因为我不知道到底要搜索什么。

with open('guest_book.txt', 'w') as file:
    while True:
        name = input('Please enter your name: ')
        if name == 'q':
            break
        else:
            print(f"Hello, {name.title()}!\nYou have been added to the guest"
                  f"book")
            file.write(f"{name.title()}\n")

标签: python

解决方案


Python 写入您提供给它的文件位置。如果此文件位置是相对路径,那么它将创建相对于脚本目录的文件。即,当您移动脚本时,.txt将相对于目录创建文件。

另一方面,如果您提供绝对路径,那么脚本的位置/执行它的位置无关紧要。相反,它将始终在该位置创建文件。

从它的声音来看,当您需要相对路径时,您正在使用绝对路径。

/home/bob/file.txt因此,从(Linux) 或C:\\Users\Bob\file.txt(Win)之类的东西更改为简单file.txt或什至./file.txt.


更新:由于您一直使用相对位置,因此问题出在您正在执行脚本的上下文中。您的代码不是这里的问题,而是您执行它的方式。

正如 vlovero 建议的那样,也许您的 IDE 没有在其新位置执行新文件?

您可以对此进行稳健测试的一种方法是导航到dir_2终端并运行

python your_program_name.py

dir_2这将在该位置执行脚本。


推荐阅读