回答編集履歴

1

気になるポイントを追記とos.scandir

2018/03/08 18:00

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -1,3 +1,7 @@
1
+ 質問文で一番気になるポイントはファイル書き出し側の処理が[os.rename](https://docs.python.jp/3/library/os.html#os.rename) windowsなら[os.replace](https://docs.python.jp/3/library/os.html#os.replace)を使ってアトミックにファイルを書き出しているかどうかですが。。。
2
+
3
+
4
+
1
5
  2案あります。
2
6
 
3
7
 
@@ -12,7 +16,7 @@
12
16
 
13
17
 
14
18
 
15
- 案2のコードのサンプルです。
19
+ 案2のファイルサイズのチェックまでのコードのサンプルです。
16
20
 
17
21
 
18
22
 
@@ -54,6 +58,8 @@
54
58
 
55
59
  def main() -> None:
56
60
 
61
+ not_founds = []
62
+
57
63
  file_sizes = Counter()
58
64
 
59
65
  for dt in date_generator():
@@ -64,23 +70,25 @@
64
70
 
65
71
  try:
66
72
 
73
+ st_size = p.stat().st_size
74
+
67
- file_sizes[p.stat().st_size] = str(p)
75
+ file_sizes[st_size] = str(p)
68
76
 
69
77
  except FileNotFoundError as ex:
70
78
 
71
- file_sizes[-1] = str(p)
79
+ not_founds.append(str(p))
72
80
 
73
81
  pass
74
82
 
75
83
  # ファイルが存在しない物
76
84
 
77
- if file_sizes[-1]:
85
+ if len(not_founds) >0:
78
86
 
79
- print(file_sizes[-1])
87
+ print(not_founds)
80
88
 
81
- else:
82
89
 
90
+
83
- print(file_sizes.most_common(5))
91
+ print(file_sizes.most_common(5))
84
92
 
85
93
 
86
94
 
@@ -93,3 +101,5 @@
93
101
 
94
102
 
95
103
  ```
104
+
105
+ Note:[os.scandir](https://docs.python.jp/3/library/os.html#os.scandir)を使う事も検討してみてくださいな。