import csvimport os# csv文件所在的文件夹路径folder_path = "/path/to/folder"# 遍历文件夹中的所有csv文件for file_name in os.listdir(folder_path): if file_name.endswith(".csv"): file_path = os.path.join(folder_path, file_name) # 判断文件是否为空 if os.stat(file_path).st_size == 0: print(f"文件 {file_path} 为空,已跳过") continue with open(file_path, "r") as f: reader = csv.reader(f) # 获取第一行的数据 first_row = next(reader) # 获取第5列和第6列的数据作为新文件名 new_file_name = f"{first_row[4]}_{first_row[5]}.csv" # 生成新文件路径 new_file_path = os.path.join(folder_path, new_file_name) # 重命名文件 os.rename(file_path, new_file_path)运行这段代码显示:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'E:/lexin/output2\\output0.csv' -> 'E:/lexin/output2\\4_5.csv'
时间: 2024-02-21 21:01:23 浏览: 68
读取文件_读取文件夹里所有文件并提取_python_
这个错误表示在尝试重命名文件时,文件正在被其他程序占用,无法访问。可能是因为你在另一个程序中打开了这个文件,或者是这个文件被其他程序占用了。
你可以尝试先关闭其他程序中打开的这个文件,或者等待其他程序释放对这个文件的占用,然后再运行这个代码。如果你确定没有其他程序占用这个文件,你可以尝试使用 `os.replace` 来代替 `os.rename`,例如:
```
import csv
import os
# csv文件所在的文件夹路径
folder_path = "/path/to/folder"
# 遍历文件夹中的所有csv文件
for file_name in os.listdir(folder_path):
if file_name.endswith(".csv"):
file_path = os.path.join(folder_path, file_name)
# 判断文件是否为空
if os.stat(file_path).st_size == 0:
print(f"文件 {file_path} 为空,已跳过")
continue
with open(file_path, "r") as f:
reader = csv.reader(f)
# 获取第一行的数据
first_row = next(reader)
# 获取第5列和第6列的数据作为新文件名
new_file_name = f"{first_row[4]}_{first_row[5]}.csv"
# 生成新文件路径
new_file_path = os.path.join(folder_path, new_file_name)
# 重命名文件
os.replace(file_path, new_file_path)
```
在这个代码中,我使用了 `os.replace` 来代替 `os.rename`,因为 `os.replace` 可以在文件被其他程序占用时覆盖原文件。
阅读全文