Python如何将文件保存到按时间戳动态创建的目录中
修复方案
你的代码有3个核心问题,修正后即可实现导出到时间戳目录的需求:
createdir()函数存在语法错误,且没有返回创建好的目录路径,主脚本无法拿到新建目录的位置- 路径拼接逻辑错误,
os.path.join()使用方式不对,Windows路径的反斜杠未做转义处理容易出现路径识别失败 - 导出Excel时错误地把Python代码片段写进了路径字符串,属于无效路径,系统无法找到对应存储位置
1. 修正目录创建脚本 createtimestampdir.py
替换为以下代码,修复语法问题,同时让函数返回最终生成的目录路径:
import datetime import os def createdir(): now = datetime.datetime.today() nTime = now.strftime("%d-%m-%Y") # 路径前加r前缀,避免反斜杠触发转义 source = r'D:\GIT-files\Automate-Stats\SVN_sample_files\svnfiles' # 正确传入多段路径给os.path.join,自动适配系统路径分隔符 dest = os.path.join(source, nTime) if not os.path.exists(dest): os.makedirs(dest) # 返回目标目录路径,供外部脚本调用 return dest
2. 修正主业务脚本的导出逻辑
主脚本开头要额外导入os模块,调用createdir()时接收返回的目录路径,拼接完整的文件保存路径后再导出即可:
import os import pandas as pd from timestampdirectory import createdir print("-------------------------------------------------------") print("Output.csv FILE") print("-------------------------------------------------------") df = pd.read_csv(r"D:\GIT-files\Automate-Stats\SVN_sample_files\sample_svn_input.txt", sep = '|') df.columns = ['groups'] df['New Columns'] = df['groups'].apply(lambda x : x.split('=')[0]) df['groups'] = df['groups'].apply(lambda x : ' '.join(x.split('=')[1:])) df['groups'] = df['groups'].apply(lambda x : x.split(',')) df = df.explode('groups') df.rename(columns = {'groups':'users', 'New Columns':'Groups'}, inplace = True) df["users"] = df["users"].str.strip() print(df) # 获取新建的时间戳目录路径 target_dir = createdir() # 拼接完整的文件存储路径 save_file_path = os.path.join(target_dir, "sample_svn_input_update.xlsx") # 导出Excel,保留原有的index=False参数 df.to_excel(save_file_path, index=False)
修正后运行主脚本,就会自动在指定的svnfiles目录下生成
dd-mm-YYYY格式命名的日期目录,处理完的Excel文件会直接存入该目录,不会出现路径找不到的问题。
内容的提问来源于stack exchange,提问作者Champs
相关产品推荐
相关产品推荐

