我有一个函数:
def loadFile(file):
path = script_dir + file #script_dir has the form '/home/username/blah/blah/' and file has the form 'asdf/foo.txt'
temp = open(path,'w')
temp.close()
with open(path) as f:
return f.read().replace('n', '')
当我在python3运行print(loadFile('asdf/asdf.txt'))
时,我得到错误:
FileNotFoundError: [Errno 2] No such file or directory: '/home/username/blah/blah/asdf/asdf.txt'
为什么会发生这种情况?我很困惑。我看到的每一个地方都说'w'
将创建文件,为什么不是呢?
注1:我运行Zorin OS Education Lite(对不起,我不能为您提供更通用的术语)。
注2:我有一个NTFS分区挂载在/home/username/blah/
open(path,'w')
当然会在path
创建文件,如果它不存在,但只有在路径中的所有目录都已经存在的情况下。也就是说,它创建一个文件,但不创建目录。
(另外,它不能创建文件,除非您对要创建该文件的目录有写权限。但是这会给你一个不同的错误信息。)
open(path,'w')将创建文件,但它不能自己创建目录。请检查脚本文件夹中是否存在相应的"asad/"目录,并且您在该文件夹中具有相应的写入权限。在这种情况下,您可以在运行脚本的目录下创建一个文件夹,并确保您对该目录具有写权限。
您还可以告诉Python该文件在您计算机上的确切位置不管正在执行的程序存储在哪里。这称为绝对文件路径。如果使用相对路径,则使用绝对路径是行不通的。例如,如果您将text_files放在python_work -例如,一个名为other_files的文件夹-然后只需传递open()路径'text_files/filename.txt'不起作用,因为Python只会查找在python_work中。的完整路径明确您希望Python查找的位置