Python读取VPN网络共享驱动器TXT文件的问题求助
解决方案
核心问题修正与优化点
- 路径处理错误:你直接将共享路径赋值给
folder,导致folder[i]取的是路径字符串的单个字符而非文件路径,必须用os.listdir获取文件列表后拼接完整路径。 - 分隔符未指定:TXT文件用
|分隔,需给pd.read_csv添加sep='|'参数,否则会按默认逗号解析数据。 - 日期筛选缺失:需通过
datetime模块生成昨日日期,匹配文件名或文件修改时间筛选目标文件。 - 合并方向错误:同结构数据合并应使用
axis=0(行合并),而非axis=1(列合并),后者会导致列错位。
完整修正代码
import pandas as pd import os from datetime import datetime, timedelta # 共享驱动器路径 share_path = r'\\fileshare.com\PATH\TO\FTP\FILES' # 生成昨日日期(根据文件名格式调整,比如'%Y-%m-%d'或'%Y%m%d') yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y%m%d') # 获取所有文件的完整路径 all_files = [os.path.join(share_path, filename) for filename in os.listdir(share_path)] # 筛选目标文件:二选一即可 # 方式1:按文件名包含昨日日期筛选 target_files = [f for f in all_files if yesterday in os.path.basename(f)] # 方式2:按文件修改日期为昨日筛选(注意时区匹配问题) # target_files = [] # for f in all_files: # mod_time = datetime.fromtimestamp(os.path.getmtime(f)) # if mod_time.strftime('%Y%m%d') == yesterday: # target_files.append(f) # 初始化空DataFrame main_dataframe = pd.DataFrame() # 遍历读取并合并文件 for file_path in target_files: try: # 读取|分隔的文件,header=0表示第一行是表头,无表头则改为header=None df = pd.read_csv(file_path, sep='|', header=0) main_dataframe = pd.concat([main_dataframe, df], axis=0, ignore_index=True) except Exception as e: print(f"读取文件{file_path}失败: {str(e)}") print(main_dataframe)
额外注意事项
- 日期格式适配:根据你的实际文件名或修改日期格式,调整
strftime的参数(例如文件名是data_2024-05-20.txt,则用'%Y-%m-%d')。 - 表头处理:如果TXT文件无表头,将
header=0改为header=None,还可通过names=['列名1', '列名2', ...]手动指定列名。 - 权限验证:若仍无法读取文件,先手动打开共享路径确认VPN连接正常、有权限访问且文件未被锁定。
内容的提问来源于stack exchange,提问作者Coop
相关产品推荐
相关产品推荐

