Python中替换文件路径反斜杠为正斜杠报错求助
解决CSV文件路径混合斜杠及替换报错问题
问题原因
你遇到的AttributeError是因为glob.glob()返回的csvfiles是列表类型,而replace()是字符串专属方法,不能直接在列表上调用,必须遍历列表里的每个路径字符串单独处理。
另外补充:Windows系统下Python的文件操作函数(比如pd.read_csv())完全能识别混合斜杠的路径,不会影响文件读取。如果只是为了统一格式美观,再做处理即可。
解决方法
方法1:列表推导式逐个替换斜杠
直接遍历csvfiles列表,对每个路径字符串执行替换操作:
import glob import os import pandas as pd mycsvdir = 'D:/myfiles/folder/anotherfolder/1folder/2folder' csvfiles = glob.glob(os.path.join(mycsvdir, '*.csv')) # 遍历列表替换每个路径的反斜杠为正斜杠 csvfiles = [path.replace('\\', '/') for path in csvfiles]
方法2:使用pathlib库(推荐)
pathlib是Python3.4+内置的现代路径处理库,能自动适配不同系统的路径分隔符,还能轻松转成统一格式:
from pathlib import Path import pandas as pd mycsvdir = Path('D:/myfiles/folder/anotherfolder/1folder/2folder') # 匹配所有csv文件,返回Path对象列表 csvfiles = list(mycsvdir.glob('*.csv')) # 用as_posix()直接返回正斜杠格式的字符串 csvfiles = [path.as_posix() for path in csvfiles]
统计列数的完整示例
结合路径处理,完成500个CSV文件列数统计:
from pathlib import Path import pandas as pd mycsvdir = Path('D:/myfiles/folder/anotherfolder/1folder/2folder') csvfiles = list(mycsvdir.glob('*.csv')) # 统计每个文件的列数 file_col_count = {} for file_path in csvfiles: try: df = pd.read_csv(file_path) file_col_count[file_path.as_posix()] = len(df.columns) except Exception as e: print(f"处理文件{file_path.as_posix()}出错: {str(e)}") # 输出统计结果 for file, count in file_col_count.items(): print(f"{file}: {count}列")
内容的提问来源于stack exchange,提问作者undertheunderclass
相关产品推荐
相关产品推荐

