首页 > 解决方案 > FileNotFoundError:尝试替换现有 csv 文件时

问题描述

我似乎无法让通常在另一个脚本中运行的代码在新脚本中正常运行。在代码末尾,它将查找文件是否存在,如果存在,它将替换它并将下载的文件名更改为指定的文件名,但我不断收到错误消息。知道我可能会错过什么吗?

这是代码

database = "E:\Stock Database\Historical Data\Historical Stock List\\"

chrome_options      = webdriver.ChromeOptions()
prefs               = {'download.default_directory': database}
chrome_options.add_experimental_option(name='prefs', value= prefs)
stocks              = webdriver.Chrome(r"E:\Python Programs\chromedriver", chrome_options = chrome_options)

#Website
stocks.get(universe_data_site)

#Navigate Web Page
stocks.find_element_by_css_selector('#ui-id-4').click()
stocks.find_element_by_css_selector('#stocks > a.blue_button.factbutton').click()
stocks.find_element_by_css_selector('body > a:nth-child(3)').click()

#Download and renaiming of File
filename = 'allstocks.csv'

#removes existing file if already exists
if os.path.exists(r"%s%s"%(database,filename)) is True:
         os.remove(r"%s%s"%(database,filename))
         os.rename(r"%s"%database+ "stockfactsheet.csv ",r"%s%s"%(database,filename))
else:
        os.rename(r"%s"%database+ "stockfactsheet.csv ",r"%s%s"%(database,filename))

这是我得到的错误

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-51-6093fcfb1ff0> in <module>()
     17          os.rename(r"%s"%database+ "stockfactsheet.csv",r"%s%s"%(database,filename))
 18 else:
---> 19         os.rename(r"%s"%database+ "stockfactsheet.csv,r"%s%s"%(database,filename))

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'E:\\Stock Database\\Historical Data\\Historical Stock Liststockfactsheet.csv ' -> 'E:\\Stock Database\\Historical Data\\Historical Stock Listallstocks.csv'

标签: python-3.xcsvfile-not-found

解决方案


您的错误消息在父目录之后没有(a)反斜杠:

'E:\\Stock Database\\Historical Data\\Historical Stock Liststockfactsheet.csv '
                                                           ^
                                                           here

我认为这可能是由于行中“stockfactsheet.csv”之后缺少引号引起的:

os.rename(r"%s"%database+ "stockfactsheet.csv,r"%s%s"%(database,filename))
                                             ^
                                             here

此外,末尾有一个空格stockfactsheet.csv,这似乎来自您第一次调用os.rename

os.rename(r"%s"%database+ "stockfactsheet.csv ",r"%s%s"%(database,filename))
                                             ^
                                             here

如果您没有使用带有上下文突出显示的 IDE(我会推荐 PyCharm),那么您真的应该这样做 - 一旦我的 IDE 突出显示了引用问题,我就立即看到了它。


推荐阅读