【发布时间】:2011-06-23 19:48:13
【问题描述】:
我无法弄清楚如何将某个文件夹及其子目录中的所有 .log 和 .txt 文件移动到新文件夹中。我了解如何使用shutil 移动一个文件。但是,我尝试使用循环来移动所有内容,但未成功。有人可以帮我弄这个吗?谢谢....
import os, os.path
import re
def print_tgzLogs (arg, dir, files):
for file in files:
path = os.path.join (dir, file)
path = os.path.normcase (path)
defaultFolder = "Log_Text_Files"
if not defaultFolder.endswith(':') and not os.path.exists('c:\\Extracted\Log_Text_Files'):
os.mkdir('C:\\Extracted\\Log_Text_Files')
if re.search(r".*\.txt$", path) or re.search(r".*\.log$", path):
os.rename(path, 'C:\\Extracted\\Log_Text_Files')
print path
os.path.walk('C:\\Extracted\\storage', print_tgzLogs, 0)
以下是回溯错误:
Traceback (most recent call last):
File "C:\SQA_log\scan.py", line 20, in <module>
os.path.walk('C:\\Extracted\\storage', print_tgzLogs, 0)
File "C:\Python27\lib\ntpath.py", line 263, in walk
walk(name, func, arg)
File "C:\Python27\lib\ntpath.py", line 263, in walk
walk(name, func, arg)
File "C:\Python27\lib\ntpath.py", line 263, in walk
walk(name, func, arg)
File "C:\Python27\lib\ntpath.py", line 259, in walk
func(arg, top, names)
File "C:\SQA_log\scan.py", line 16, in print_tgzLogs
os.rename(path, 'C:\\Extracted\\Log_Text_Files')
WindowsError: [Error 183] Cannot create a file when that file already exists
【问题讨论】:
-
您可以轻松地使用 path.endswith(".txt") 而不是 re.search(r".*\.txt$", path)。
-
@Zsolt Botkai - 问题是同时移动所有 .log 和 .txt 文件。
-
不应该
shutil.move('time.log', 'C:\\...')是shutil.move(path, 'C:\\...')? -
我也有点困惑,为什么您在硬编码值 (
time.log) 上使用shutil.move而不是变量path...