readlines()で戻されるのは文字列ではなく、ファイルの1行がリストの1要素になったリストを返す。
そのため、print bはErrorとなる。
for 分で各要素をループで回す必要がある。
for list in b:
f2.write(list)
------------------------------------
失敗例
------------------------------------
#!/usr/bin/python
f = open ('file1.txt', 'r')
f2 = open ('file2.txt', 'w')
b = f.readlines()
print b
f.close()
f2.close()
失敗例
------------------------------------
kurokawa-no-MacBook-Air:Linux taka$ ./file-open4.py
['a,line-1,c\n', 'b,line-23,c\n', 'c,line-333a,d\n', 'a,line-4444,d\n', 'c,line-4a3ac,bb,dd\n', 'g,line-2c,33,dd\n', 'end\n']
Traceback (most recent call last):
File "./file-open4.py", line 8, in <module>
f2.write(b)
TypeError: expected a character buffer object
------------------------------------
成功例 file-open4.py
------------------------------------
kurokawa-no-MacBook-Air:Linux taka$ more file-open4.py
#!/usr/bin/python
f = open ('file1.txt', 'r')
f2 = open ('file2.txt', 'w')
b = f.readlines()
print b
for list in b:
f2.write(list)
f.close()
f2.close()
------------------------------------
Result
------------------------------------
kurokawa-no-MacBook-Air:Linux taka$ ./file-open4.py
['a,line-1,c\n', 'b,line-23,c\n', 'c,line-333a,d\n', 'a,line-4444,d\n', 'c,line-4a3ac,bb,dd\n', 'g,line-2c,33,dd\n', 'end\n']
kurokawa-no-MacBook-Air:Linux taka$ more file2.txt
a,line-1,c
b,line-23,c
c,line-333a,d
a,line-4444,d
c,line-4a3ac,bb,dd
g,line-2c,33,dd
end
0 件のコメント:
コメントを投稿