python 3.2:IOError:[Errno 22]参数无效:' / home / pi / data / temp / file1 \ n.txt'

时间:2014-11-20 04:23:12

标签: python-3.x file-io raspberry-pi

我是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'

请在这方面帮助我。 谢谢!

2 个答案:

答案 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)

进程无法写入该目录中的文件。要么使过程能够,或者在其他地方写入。