即使文件存在,我也得到了错误的输出。下面是代码
from sys import argv
from os.path import exists
import sys
import os
script,fromf,tof=argv
inf=open(fromf)
if exists(str(inf))==True:
indata=inf.read()
outf=open(tof,'w')
if exists(str(outf))==True:
print("Error! Output file exists.")
sys.exit()
else:
outf.write(indata)
print("The task is accomplished.")
else:
print("Error! Input file doesn't exists.")
我传递的论点如下
python3 file.py aaa.txt bbb.txt
文件aaa.txt存在。。。但它仍然显示“错误!“输入文件不存在”
通过将路径作为字符串提供给
os.path.exists
,可以检查文件是否存在。但是,您所做的是提供一个文件句柄;因此os.path.exists
返回False
,即使文件存在我甚至不建议检查是否存在。如果文件存在,一切都会正常,如果没有,您可以使用
try: except
捕获错误另外,您没有关闭代码中的文件,这可能会导致问题。最好使用
with open(filename) as filehandle
语法打开它们,这样可以确保它们在最后被关闭完整的示例代码可能如下所示:
您已经
open
该文件了。如果文件不存在,就会出现异常。所以你的测试是无用的(正如Reut解释的那样是错误的)此外,“覆盖前检查文件是否存在”功能不起作用:
您打开文件进行写入,因此无需检查文件是否存在,测试是否错误(出于相同的原因),但即使它是正确的,也会与您想要的功能相反
您希望避免覆盖现有文件,所以在截短它之前测试,否则就太晚了,您总是会出错退出
固定代码:
os.path.exists
需要路径(字符串),而不是file
对象您应该使用
fromf
作为参数:相关问题 更多 >
编程相关推荐