2014年8月17日日曜日

Python part6: file open and readlines()


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 件のコメント:

コメントを投稿