我是python编程的新手。我有一个counter.txt文件,我从中读取计数器值。使用此计数器值,我必须创建新文件到其他文件夹,如' /home/pi/data/temp/file%s.txt'%line。 例如:file1.txt,file2.txt等等。
我为此编写了一些代码,由于某种原因,我遇到了以下错误:
IOError: [Errno 22] Invalid argument: '/home/pi/data/temp/file1\n.txt'
我的python代码如下:
while True:
counter_file = open("counter.txt", 'r+')
line = counter_file.readline()
print(line)
counter_file.close()
file_read = open(r'/home/pi/data/temp/file%s.txt'%line, 'w')
#data_line = line_read.decode("utf-8")
#file_read.write("%s"%data_line)
file_read.close()
counter_file = open("counter.txt", 'w')
line = int(line) + 1
counter_file.write("%s"%line)
counter_file.truncate()
counter_file.close()
当我执行此操作时,我得到了这个追溯:
File "compute1.py", line 24, in <module>
file_read = open(r'/home/pi/data/temp/file%s.txt'%line, 'w')
IOError: [Errno 22] Invalid argument: '/home/pi/data/temp/file1\n.txt'
请在这方面帮助我。 谢谢!
答案 0 :(得分:6)
您需要从line
变量中删除尾随换行符。只需在其上调用.strip()
即可完成此操作。您可以看到文件路径显示为
/home/pi/data/temp/file1\n.txt
当你可能期待它
时/home/pi/data/temp/file1.txt
这是因为您的counter.txt
文件使用\n
作为换行符,因此每行也以此结尾。当您使用readline
时,它会获得整行,包括换行符,因此您需要将其删除。尝试用
line = counter_file.readline().strip()
答案 1 :(得分:0)
进程无法写入该目录中的文件。要么使过程能够,或者在其他地方写入。