Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python os模块可以看到文件夹中的项目,但可以';不要修改它们_Python_File_Text_Operating System_Document - Fatal编程技术网

python os模块可以看到文件夹中的项目,但可以';不要修改它们

python os模块可以看到文件夹中的项目,但可以';不要修改它们,python,file,text,operating-system,document,Python,File,Text,Operating System,Document,我正在尝试创建一个程序,该程序循环浏览.txt文件列表,并将其文件名和内容添加到字典中。程序正确地导航到文件夹,我甚至可以打印出文件夹中文件的名称。但是,当我尝试将文件名和内容添加到字典中时,我在控制台中遇到此错误 Traceback (most recent call last): File "test.py", line 33, in <module> user1.append_journal_files(location) File "test.py", lin

我正在尝试创建一个程序,该程序循环浏览.txt文件列表,并将其文件名和内容添加到字典中。程序正确地导航到文件夹,我甚至可以打印出文件夹中文件的名称。但是,当我尝试将文件名和内容添加到字典中时,我在控制台中遇到此错误

Traceback (most recent call last):
  File "test.py", line 33, in <module>
    user1.append_journal_files(location)
  File "test.py", line 21, in append_journal_files
    with open(filename, 'r') as file_object:
FileNotFoundError: [Errno 2] No such file or directory: 'dump.0001.txt'

filename
只是基本名称,如
dump.0001.txt

如果要打开文件,则需要完整路径,如
C:\Users\Christian Gentry\AppData\Local\Autodesk\Revit\Autodesk Revit 2018\Journals\dump0001.txt
。(也可以是当前工作目录的相对路径,但必须是指向文件的路径。)

你已经在为
listdir
做这件事了——你不仅仅是在传递
杂志,并期望它能起作用,这与这里的想法是一样的

最简单的修复方法是:

pathname = os.path.join(directory, filename)
with open(pathname, 'r') as file_object:

当我们这样做的时候:

  • 您只跳过了Windows路径名中的一个反斜杠。从技术上讲,您所拥有的是正确的,因为所有其他路径组件碰巧都以无效反斜杠转义的字母开头,但这并不是一件值得信赖的事情。使用原始字符串文字、转义所有反斜杠或使用正斜杠
  • 您不需要
    fsencode
    传递到
    listdir
    的路径,也不需要
    fsdecode
    对返回的结果进行解码。如果您只是传入一个字符串,Python将自动对其进行适当编码,并自动为您解码结果
  • 考虑使用而不是
    os
    ;对于新手来说,它更容易理解,它的帮助更容易导航,并且它使很多小事情出错变得更加困难。在3.6之前,它不适用于大量的stdlib,但您使用的是3.6,所以这无关紧要

打开文件时,您错过了路径的目录部分。嘿,非常感谢@abarnert!我没有意识到该路径必须连接到文件名。我必须对您的解决方案做的一个更改是,我必须输入pathname=os.path.join(目录,文件名),而不是pathname=os.path.join(目录,文件名)。这解决了我的问题!
pathname = os.path.join(directory, filename)
with open(pathname, 'r') as file_object: