python - 为什么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 写入您提供给它的文件位置。如果此文件位置是相对路径,那么它将创建相对于脚本目录的文件。即,当您移动脚本时,.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
这将在该位置执行脚本。
推荐阅读
- asp.net-mvc - 如何在 MVC 控制器中读取 div 的 textContent
- python - 如何在单独的文件中获取函数的函数名称?
- javascript - 无法在 ReactJS 上使用 Axios 获取数据
- python - 如何以最有效的方式根据数据框中的标准传输文件集合
- opencv - 如何在 OpenCV 中合并重叠矩形?(Python)
- python - 哪个正则表达式将获得python中开始正则表达式和结束正则表达式之间的所有组匹配?
- ruby-on-rails - 浏览器缓存神社 s3 私人附件
- c# - 使用 c# 在 Linq 中展平对象
- javascript - Tooltipster 已初始化,但悬停或单击时不显示
- java - spring-boot 2 和 liquibase:应用程序 yml 中的配置被忽略