使用os.walk在python中修改文件
我有一个带有子目录列表的父目录。每个子目录都包含一个名为data.json的文件。我想遍历所有子目录,并对data.json文件执行一些编辑操作。我如何做到这一点?目前我正在做以下工作:使用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:
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”模式下再次打开文件以保存修改后的数据更简单、更安全。这样,如果出现问题,您就不太可能破坏数据。