我有一个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 语句失败时,意味着不应该达到删除。
答案 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)