Python文件名if语句不起作用

时间:2017-01-31 14:20:15

标签: python windows

我有一个python脚本,我需要从Windows命令行运行。这条线

for filename in os.listdir(os.getcwd() + "\\sampdirectory1\\sampdirectory2"):
  if filename.startswith("sample.csv"):
     os.remove("sample.csv")

不断给我错误

  

系统找不到指定的文件'sample.csv'

该文件尚未存在,它是第一次在脚本中创建,然后每次在脚本编辑之后。我不明白为什么它会在os.remove上尝试sample.csv,当 if 语句失败时,意味着不应该达到删除。

4 个答案:

答案 0 :(得分:0)

在按住它的同时不能删除它,因为"在Windows上,尝试删除正在使用的文件会导致异常被引发"

https://docs.python.org/2/library/os.html#os.remove

答案 1 :(得分:-1)

这里有两件事需要注意:

首先:文件夹/目的地不同。你应该使用     os.remove(os.getcwd()+" \ sampdirectory1 \ sampdirectory2" +" sample.csv")

第二:更优雅的解决方案是

try:
    os.remove(os.getcwd() + "\\sampdirectory1\\sampdirectory2" + "sample.csv")
except:
    print ('no such file/directory')
    pass

答案 2 :(得分:-1)

可能有文件.\sampdirectory1\sampdirectory2\sample.csv,因此条件有效。但是您正在尝试删除不存在的文件.\sample.csv(当前目录中的 sample.csv )并且您收到错误。

此外,可能存在文件.\sampdirectory1\sampdirectory2\sample.csvSOMETHING,因此条件仍然有效且您收到错误。

答案 3 :(得分:-1)

您需要os.remove(filename)代替os.remove("sample.csv") 因为首先sample.csv不是您正在检查的文件,如果它在删除之前存在。即使文件名为sample.csv,您也需要精确到文件的完整路径。

当你迭代列出目录文件时,你不需要检查文件是否存在。

因此,如果您要删除名称以sample.csv开头的文件,则代码应如下所示:

for filename in os.listdir(os.getcwd() + "\\sampdirectory1\\sampdirectory2"):
    if filename.startswith("sample.csv"):
        os.remove(filename)

但是如果你只想删除sample.csv,那么你不需要任何循环。只是做

filename = os.path.join(os.getcwd(), "sampdirectory1\\sampdirectory2\\sample.csv")
if os.path.exists(filename):
     os.remove(filename)