open打开一个字符串变量时提示[Errno 22] Invalid argument

题目描述

定义一个变量,它的值是要操作的文件的绝对路径,用open函数打开要操作时提示invalid arguments

题目来源及自己的思路

用print函数测试发现是没有问题,打印logfile是正常的,但是在open中打开就不正常了。

相关代码

#! python3
# -*- encoding:utf-8 -*-



import os
import sys
import time



if os.path.isdir('logs'):
    pass
else:
    os.mkdir('logs')

log_path = os.path.join(os.getcwd(),'logs',time.asctime())
logfile = os.path.normcase(log_path) + '.log'

with open(logfile,'wb') as lf:
    lf.write("test")

你期待的结果是什么?实际看到的错误信息又是什么?

错误信息:OSError: [Errno 22] Invalid argument: 'e:\python\远程管理\logs\tue sep 18 17:50:23 2018.log'

阅读 2.9k
1 个回答

问题出在lf.write("test")这地方,为什么呢?因为你这里的文件打开方式wb,也就是以二进制流或者叫做byte的形式打开,然而你此处lf.write("test")写的是字符串,所以出错了,正确的操作应该是:

lf.write(b"test")

这样子,写入byte类型的字符串。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题