通过下面的代码,我收到了IOError: [Errno 13] Permission denied
,我知道这是由于输出目录是输入目录的子文件夹:
import datetime
import os
inputdir = "C:\\temp2\\CSV\\"
outputdir = "C:\\temp2\\CSV\\output\\"
keyword = "KEYWORD"
for path, dirs, files in os.walk(os.path.abspath(inputdir)):
for f in os.listdir(inputdir):
file_path = os.path.join(inputdir, f)
out_file = os.path.join(outputdir, f)
with open(file_path, "r") as fh, open(out_file, "w") as fo:
for line in fh:
if keyword not in line:
fo.write(line)
但是,当我将输出文件夹更改为:outputdir = "C:\\temp2\\output\\"
时,代码将成功运行。我希望能够将修改后的文件写入输入目录的子文件夹。如果没有“权限被拒绝”错误,我怎么做?在这种情况下,tempfile
模块是否有用?
os.listdir
将返回目录和文件名。output
位于inputdir
内,因此with
正在尝试打开一个用于读/写的目录。你到底想干什么?
path, dirs, files
甚至没有在递归os.walk
中使用。编辑:我想您正在寻找这样的内容:
如果成功地写入到输入遍历目录之外的输出目录,则首先使用与上面相同的代码将其写入该目录,然后将其移动到输入目录内的子目录。你可以用
os.move
来做这个。相关问题 更多 >
编程相关推荐