我不喜欢python,因此为我的问题的微不足道道歉:
我有以下文件结构,其中每天都会保存一份带有员工的.csv
文件:
dir/2012-01-01/employee.csv.bz2
dir/2012-01-02/employee.csv.bz2
dir/2012-01-03/employee.csv.bz2
dir/2012-01-04/employee.csv.bz2
dir/2012-01-05/employee.csv.bz2
我想浏览每个文件并重命名。之后我想将新文件保存在一个公共目录dir/common
中。我尝试了什么:
import sys
import os
path = 'dir/'
for folderName, subfolders, filenames in os.walk(path):
for filename in filenames:
infilename = os.path.join(path, filename)
newname = infilename.replace('.csv.bz2', '.csv')
output = os.rename(infilename, newname)
但我收到错误:
output = os.rename(infilename, newname)
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'dir/employee.csv.bz2' -> 'dir/employee.csv'
不确定我做错了什么。
答案 0 :(得分:1)
在folderName
中使用path
代替os.path.join(path, filename)
,因为folderName
具有子文件夹的完整路径。
infilename = os.path.join(folderName, filename)
如果您要保存在一个文件夹中,请在newname
中使用此文件夹,rename()
会将文件移至新位置。
newname = os.path.join('dir', 'common', filename.replace('.csv.bz2', '.csv'))
BTW:但你必须先创建这个文件夹。
os.mkdir('dir/common')
或从路径
创建文件夹和所有中间文件夹os.makedirs('dir/common/many/sub/folders/to/create')
答案 1 :(得分:0)
infilename = os.path.join(path, filename)
您缺少子文件夹,这可以从错误消息中看出:'dir/employee.csv.bz2'
。