使用文件的绝对路径时无法写入 python 中的文件

I can't write to a file in python when using the absolute path of the file

我创建了一个脚本来写入 python 中的文件:

a_file = open("file:///C:/Users/xdo/OneDrive/Desktop/Javascript/read%20and%20write/testfileTryToOVERWRITEME.txt", "a+")
a_file.write("hello")

文件的绝对路径为:file:///C:/Users/xdo/OneDrive/Desktop/Javascript/read%20and%20write/testfileTryToOVERWRITEME.txt

但是,程序不会写入(追加)文件。我可以 运行 程序,但文件没有任何反应。奇怪的是,如果我将文件放在与脚本相同的目录中并且 运行 使用位置“testfileTryToOVERWRITEME.txt”的脚本,它会起作用。即:

a_file= open("testfileTryToOVERWRITEME.txt", "a+")

a_file.write("hello")

这 100% 有效并附加到文件中。但是当我使用文件的绝对路径时,它永远不会起作用。怎么了?

编辑 我什么都试过了还是不行

我的代码:

a_file= open("C://Users//xdo//OneDrive//Desktop//Javascript//read%20and%20write//testfileTryToOVERWRITEME.txt", "a+")

a_file.write("hello")
a_file.close()

这没有用。我也试过:

a_file= open("C:/Users/xdo/OneDrive/Desktop/Javascript/read%20and%20write/testfileTryToOVERWRITEME.txt", "a+")

a_file.write("hello")
a_file.close()

这没有用

编辑(终于成功了)

终于成功了。我用常规 space “ ” 替换了“%20”,并像这样使用了 pathlib 模块:

from pathlib import Path
filename = Path("C:/Users/qqWha/OneDrive/Desktop/Javascript/read and write/testfileTryToOVERWRITEME.txt")
f = open(filename, 'a+')
f.write("Hello")

现在它写入文件。 它也可以使用“with”。像这样:

with open("c:/users/xdo/OneDrive/Desktop/Javascript/read and write/testfileTryToOVERWRITEME.txt", "a+") as file:
file.write("hello")

这行得通。当我们使用 open 函数打开 python 中的文件时,我们必须使用两个正斜杠。

f = open('C://Users//xdo//OneDrive//Desktop//Javascript//read%20and%20write//testfileTryToOVERWRITEME.txt', 'a+')
f.write("writing some text")
f.close()

或者您可以使用另一种方式,您必须使用 from pathlib import Path 包。

from pathlib import Path
filename = Path("C:/Users/xdo/OneDrive/Desktop/Javascript/read%20and%20write/testfileTryToOVERWRITEME.txt")
f = open(filename, 'a+')
f.write("Hello")
f.close()

如果问题仍然存在,请尝试另一个绝对路径,例如 "C:/Users/xdo/OneDrive/Desktop/testfileTryToOVERWRITEME.txt"

尝试做“with”。此外,将 %20 替换为 space。 Python 不会自动对此进行解码,但在下面的实例中使用 space 应该不会有问题。

with open("c:/users/xdo/OneDrive/Desktop/Javascript/read and write/testfile.txt", "a+") as file:
    file.write("hello")

在这种情况下,如果文件不存在,它将创建它。唯一可以阻止这种情况的是是否存在权限问题。