首先,正如@buran所评论的那样,没有必要使用“str”,以下内容就足够了:
new_file_path = os.path.join(dir_path, 'mynewfile.txt')
脚本所在的位置由__file__
给出,而当前工作目录(通常是调用脚本的位置)由os.getcwd()
给出。从问题的措辞中并不完全清楚哪一个是预期的,尽管它们通常相同。但在以下情况下不同:
C:\Booboo>python3 test\my_script.py
但是它们处于以下情况:
C:\Booboo>python3 my_script.py
但是,如果你试图在当前工作目录中打开一个文件,为什么还需要调用os.getcwd()
函数呢?不指定任何目录直接打开文件应该默认将其放置在当前工作目录:
import os
with open('mynewfile.txt', "x") as f:
# do something with file f (it will be closed for you automatically when the block terminates
另一个问题可能是你使用了无效的标志打开文件,如果文件已经存在,则使用"x"
。尝试使用"w"
:
with open(new_file_path, "w") as f:
os.path.join()
的结果使用str()
函数,同时将您得到的完整回溯信息贴出。在路径中使用正斜杠不会有问题。 - buranopen('mynewfile.txt', 'w')
就可以完成任务... - Tomerikoo