题目描述
定义一个变量,它的值是要操作的文件的绝对路径,用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'
问题出在
lf.write("test")
这地方,为什么呢?因为你这里的文件打开方式wb
,也就是以二进制流或者叫做byte的形式打开,然而你此处lf.write("test")
写的是字符串,所以出错了,正确的操作应该是:lf.write(b"test")
这样子,写入byte类型的字符串。