Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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
使用os.walk在python中修改文件_Python_Json_Os.walk - Fatal编程技术网

使用os.walk在python中修改文件

使用os.walk在python中修改文件,python,json,os.walk,Python,Json,Os.walk,我有一个带有子目录列表的父目录。每个子目录都包含一个名为data.json的文件。我想遍历所有子目录,并对data.json文件执行一些编辑操作。我如何做到这一点?目前我正在做以下工作: for dir,dirs, files in os.walk("."): for filename in files: if file == 'data.json': with open(file, 'r') as f:

我有一个带有子目录列表的父目录。每个子目录都包含一个名为data.json的文件。我想遍历所有子目录,并对data.json文件执行一些编辑操作。我如何做到这一点?目前我正在做以下工作:

  for dir,dirs, files in os.walk("."):
        for filename in files:
            if file == 'data.json':
             with open(file, 'r') as f:
             #carry out editing operation

但我看不到有任何编辑发生。我怀疑找不到data.json文件

首先,您需要使用完整路径正确访问文件:

for path, subdirs, files in os.walk("."):
    for filename in files:
        if filename == 'data.json':
            fullpath = os.path.join(path, filename)
然后在所需模式下打开,其中包含的是
read

with open(fullpath, 'r') as f:
    ...

阅读有关
open()

模式的更多信息首先,您需要使用完整路径正确访问文件:

for path, subdirs, files in os.walk("."):
    for filename in files:
        if filename == 'data.json':
            fullpath = os.path.join(path, filename)
然后在所需模式下打开,其中包含的是
read

with open(fullpath, 'r') as f:
    ...

阅读有关
open()

模式的更多信息您不能修改以读取模式打开的文件。您可以阅读有关不同模式的信息。另外,
file
只提供基本文件名,而不是完整路径。我建议您在代码中加入一些
print
调用,以便查看发生了什么。如果您使用的是Python 3.4+,请看一看,它有很多处理文件的好东西,而且比使用
os.walk
更好。我尝试将权限更改为“w+”,但不起作用。问题是我没有看到代码流进入if循环:if file=='data.json':当然“w+”不起作用。正如我之前链接的答案所说,如果文件存在,“w+”将覆盖现有文件。您可以使用“r+”。但是,在“r”模式下打开、读取数据、关闭文件(或使用自动关闭文件),然后在“w”模式下再次打开文件以保存修改后的数据更简单、更安全。这样,如果出现问题,您就不太可能破坏数据。您不能修改以读取模式打开的文件。您可以阅读有关不同模式的信息。另外,
file
只提供基本文件名,而不是完整路径。我建议您在代码中加入一些
print
调用,以便查看发生了什么。如果您使用的是Python 3.4+,请看一看,它有很多处理文件的好东西,而且比使用
os.walk
更好。我尝试将权限更改为“w+”,但不起作用。问题是我没有看到代码流进入if循环:if file=='data.json':当然“w+”不起作用。正如我之前链接的答案所说,如果文件存在,“w+”将覆盖现有文件。您可以使用“r+”。但是,在“r”模式下打开、读取数据、关闭文件(或使用自动关闭文件),然后在“w”模式下再次打开文件以保存修改后的数据更简单、更安全。这样,如果出现问题,您就不太可能破坏数据。