Skip to content

Commit 276b836

Browse files
committed
Add docs
1 parent ae0daad commit 276b836

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

docs/ch05-01-files.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# ファイル操作
2+
3+
ファイルの読み書きをする方法について説明します。
4+
5+
## 読み込み
6+
7+
`file.txt` というファイルを読み込み、1 行ずつプリントするプログラムは次のように書きます。
8+
9+
**main.py**
10+
11+
```python
12+
#!/usr/bin/env python
13+
14+
15+
def main():
16+
f = open('file.txt')
17+
18+
for line in f:
19+
print(line)
20+
21+
f.close()
22+
23+
24+
if __name__ == '__main__':
25+
main()
26+
```
27+
28+
`for` を使わずに 1 行読み込む場合は `readline()` メソッドを使います。
29+
30+
```python
31+
print(f.readline())
32+
```
33+
34+
注意が必要なのは読み込んだ各行の文字列は末尾の改行も含んでいるということです。例えば `file.txt` が次のような内容だった場合
35+
36+
**file.txt**
37+
38+
```
39+
aaa
40+
bbb
41+
ccc
42+
```
43+
44+
`for``readline()` で読み込んだ各行の文字列は次のようになります。
45+
46+
```python
47+
'aaa\n'
48+
'bbb\n'
49+
'ccc\n'
50+
```
51+
52+
`print()` は文字列をプリントした後に自動で改行を 1 つ書き出すため、これらの文字列をプリントすると改行が 2 つ入った状態で出力されてしまいます。
53+
54+
```shell
55+
$ python main.py
56+
aaa
57+
58+
bbb
59+
60+
ccc
61+
```
62+
63+
これを解決するには読み込んだ文字列に対して `strip()` というメソッドを呼び出します。 `strip()` は文字列の両端にある空白や改行を削除するメソッドです。
64+
65+
```python
66+
#!/usr/bin/env python
67+
68+
69+
def main():
70+
f = open('file.txt')
71+
72+
for line in f:
73+
print(line.strip())
74+
75+
f.close()
76+
77+
78+
if __name__ == '__main__':
79+
main()
80+
```
81+
82+
その他次のようなメソッドでも文字列を読み込むことができます。
83+
84+
| メソッド | 説明 ||
85+
|---------------|-----------------------------------|-------------------------------|
86+
| `readlines()` | 各行をリストで読み込む | `['aaa\n', 'bbb\n', 'ccc\n']` |
87+
| `read()` | 全行を 1 つの文字列として読み込む | `'aaa\nbbb\nccc\n'` |
88+
89+
## 書き込み
90+
91+
ファイルを書き込む処理は次のように書きます。
92+
93+
```python
94+
#!/usr/bin/env python
95+
96+
97+
def main():
98+
f = open('file.txt', 'w')
99+
f.write('Hello, World!\n')
100+
f.close()
101+
102+
103+
if __name__ == '__main__':
104+
main()
105+
```
106+
107+
`open()` の第 2 引数に `'w'` を付けることで書き込みモードでファイルをオープンします。そして `write()` メソッドに書き出したい文字列を渡すことでファイルに書き出すことができます。 `write()` には文字列しか渡すことができませんので、数値などを書き出したいときは f-string を使って文字列に変換する必要があります。また `write()``print()` とは違って改行を自動で付与しないので、改行したいときは明示的に `'\n'` を渡す必要があります。

0 commit comments

Comments
 (0)