cmd打开python报错_关于python cmd中执行报错问题,不知道哪里出了问题

匿名用户

1级

2018-09-29 回答

首先上优化后的代码:

import datetime

import os

pdir = 'result\\'

if not os.path.exists(pdir):

os.makedirs(pdir)

with open(pdir + 'test' + str(datetime.date.today()) + '.txt','a') as f:

f.write('1234567890')这里面,你遇到的最主要的问题就是要写入的文件其目录不存在,这在很多语言中都是不会自动处理的,所以你需要增加一个判断目录是否存在的逻辑,如果不存在就创建它。

或者为了提高效率,你也可以这样优化:

import datetime

def testZ(content):

try:

with open('result\\test' + str(datetime.date.today()) + '.txt','a') as f:

f.write(content)

except FileNotFoundError as e:

import os

os.makedirs('result\\')

return testZ(content)

testZ('1234567890')这里把写入过程封装成了一个函数,它在执行try的时候遇到了FileNotFoundError,于是执行except分支下的代码,导入os包、创建目录,然后自身递归,比起上面的代码,如果目录本身存在则会少判断一次,也要少导入一个OS包。

上面的代码因为使用了递归,所以有产生死循环的风险,虽然在这种情形下可能性不大,但为了让代码更加健壮仍然可以优化一下:

import datetime

def testZ(content,flag=1):

try:

with open('result\\test' + str(datetime.date.today()) + '.txt','a') as f:

f.write(content)

except FileNotFoundError as e:

if flag:

import os

os.makedirs('result\\')

return testZ(content,0)

else:

print(e)

testZ('1234567890')这样,通过一个关键字参数判断递归次数,正常情况只需递归一次,超出就打印错误。

追问:

首先谢谢你的解答,预先判断是否存在,再创建文件当然也可以;但是我疑惑的是我的代码虽然简陋,但是在sublime中是可以通过的,即使文件不存在也会创建;但到了CMD中执行就出现报错了,想不通区别在哪里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值