在 os.walk() 中使用 os.remove() for loop returns FileNotFoundError
using os.remove() in os.walk() for loop returns FileNotFoundError
我在 Anaconda 命令提示符下使用 Python 3.6.4。
我有一个函数使用 os.walk()
循环遍历根目录中的所有可用文件。
我的代码是:
def apply_to_files(pattern, base='.') :
regex = re.compile(pattern)
matches = []
completed = ''
for root, dirs, files in os.walk(base):
for f in files:
if regex.match(f):
os.remove(f)
这具体触发了 FileNotFoundError
:
FileNotFoundError: [WinError 2] The system cannot find the file
specified: 'c.html'
我这样调用函数:
apply_to_files('c.*', 'C')
我所在的目录 运行 该函数的结构为:
root
-C
-c.html
-c.txt
-c.php
-B
-D
当我将 os.remove(f)
替换为 print(f)
时,returns 所有文件都如您所料。我在这里错过了什么?
files
变量仅包含文件名。尝试操作文件时,您必须添加完整路径:
for root, dirs, files in os.walk(base):
for f in files:
if regex.match(f):
os.remove(os.path.join(root, f))
我在 Anaconda 命令提示符下使用 Python 3.6.4。
我有一个函数使用 os.walk()
循环遍历根目录中的所有可用文件。
我的代码是:
def apply_to_files(pattern, base='.') :
regex = re.compile(pattern)
matches = []
completed = ''
for root, dirs, files in os.walk(base):
for f in files:
if regex.match(f):
os.remove(f)
这具体触发了 FileNotFoundError
:
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'c.html'
我这样调用函数:
apply_to_files('c.*', 'C')
我所在的目录 运行 该函数的结构为:
root
-C
-c.html
-c.txt
-c.php
-B
-D
当我将 os.remove(f)
替换为 print(f)
时,returns 所有文件都如您所料。我在这里错过了什么?
files
变量仅包含文件名。尝试操作文件时,您必须添加完整路径:
for root, dirs, files in os.walk(base):
for f in files:
if regex.match(f):
os.remove(os.path.join(root, f))