Python中为现有Excel文件名添加时间戳时遭遇FileNotFoundError的问题求助
Python中为现有Excel文件名添加时间戳时遭遇FileNotFoundError的问题求助
嗨,我刚接触Python,尝试给现有Excel文件的名称加上时间戳,结果代码报了FileNotFoundError,折腾了各种我能想到的办法还是解决不了,麻烦各位帮忙看看问题出在哪呀?
报错信息如下:
FileNotFoundError Traceback (most recent call last) <ipython-input-155-c1bfbce8e566> in <module> ----> 1 os.rename(r'\dbg.ADS.DB.com\MAD-FSU\BoS_Data_Validations\Validation Engine\GTRNRE\GTRNRE_Validation_Report.xlsx',r'\dbg.ADS.DB.com\MAD-FSU\BoS_Data_Validations\Validation Engine\GTRNRE\GTRNRE_Validation_Report_'+TSExcel+'.xlsx') FileNotFoundError: [WinError 3] The system cannot find the path specified: '\\dbg.ADS.DB.com\\MAD-FSU\\BoS_Data_Validations\\Validation Engine\\GTRNRE\\GTRNRE_Validation_Report.xlsx' -> '\\dbg.ADS.DB.com\\MAD-FSU\\BoS_Data_Validations\\Validation Engine\\GTRNRE\\GTRNRE_Validation_Report_20230710-16:27:57.xlsx'
我写的代码:
import pandas as pd import datetime as dt import os timestamp = pd.Timestamp(dt.datetime(2021, 10, 10)) res = timestamp.today() def numConcat(num1, num2): # Convert both the numbers to strings num1 = str(num1) num2 = str(num2) # Concatenate the strings num1 += num2 return int(num1) a = res.year b = res.strftime("%m") CurrDate=numConcat(a, b) CurrDate TSExcel = str(a) + res.strftime('%m%d-%H:%M:%S') os.rename(r'\dbg.ADS.DB.com\MAD-FSU\BoS_Data_Validations\Validation Engine\GTRNRE\GTRNRE_Validation_Report.xlsx', r'\dbg.ADS.DB.com\MAD-FSU\BoS_Data_Validations\Validation Engine\GTRNRE\GTRNRE_Validation_Report_'+TSExcel+'.xlsx')
我试过各种自己能想到的调整,但还是不行,有没有大佬能指点一下问题所在呀?
社区大佬的分析与解决方案:
嘿,刚看了你的问题,主要有两个关键问题导致报错,咱们一步步来解决:
UNC网络共享路径格式错误
你访问的是网络共享文件夹,Windows下的UNC路径必须以\\开头(对应Python原始字符串里的r'\\server\share'),但你的代码里写的是r'\dbg.ADS.DB.com\...',开头只有一个反斜杠,系统识别不了正确的共享路径,自然找不到文件。文件名包含Windows非法字符
你生成的时间戳TSExcel里有冒号:,比如20230710-16:27:57,而Windows文件名是不允许出现冒号的,就算路径对了,重命名也会失败,得把冒号换成合法字符,比如横杠-或者下划线_。
另外,你生成时间戳的代码有点冗余,可以简化一下,直接用pandas的时间戳格式化就能得到想要的结果,不用自定义拼接函数。
修正后的代码:
import pandas as pd import os # 生成合法的时间戳字符串(把冒号换成横杠) TSExcel = pd.Timestamp.today().strftime('%Y%m%d-%H-%M-%S') # 修正UNC路径:开头用两个反斜杠(原始字符串里写\\) original_path = r'\\dbg.ADS.DB.com\MAD-FSU\BoS_Data_Validations\Validation Engine\GTRNRE\GTRNRE_Validation_Report.xlsx' new_path = r'\\dbg.ADS.DB.com\MAD-FSU\BoS_Data_Validations\Validation Engine\GTRNRE\GTRNRE_Validation_Report_' + TSExcel + '.xlsx' # 先检查原始文件是否存在,避免报错 if os.path.exists(original_path): os.rename(original_path, new_path) print("文件重命名成功!") else: print(f"错误:找不到文件 {original_path}")
补充一点:如果你的网络共享文件夹需要权限访问,可能还要确保当前运行Python的用户有权限读写该路径下的文件哦。
备注:内容来源于stack exchange,提问作者dskmrjt
相关产品推荐
相关产品推荐

