1
我有以下方法將directory_path
中的所有文件複製到my django model。那麼,這是按預期工作:將文件複製到upload_to
模型中定義的位置。但是有一個問題:並非所有東西都被複制。只有一部分文件。像17.530字節,而不是〜1-2兆字節。 :(這讓我很傷心Django:複製文件只複製一部分
def _handle_directory(self, directory_path, directory):
for fs_name in os.listdir(directory_path):
fs_path = os.path.join(directory_path, fs_name)
if os.path.isfile(fs_path):
path = os.path.join(directory_path, fs_path)
with open(path, 'r') as f:
file_wrapper = File(f)
self.cnt_files += 1
new_file = FsFile(directory=directory,
filename=fs_name.decode(self.fs_encoding).encode('utf-8'),
file=file_wrapper, uploader=self.uploader)
new_file.save()
更新1:
我跑這三個文件:
filename | orig. size | imported size | ratio
foo.pdf | 70.818 | 1365 | 1,92 %
bar.html | 3.355 | 3355 | 100 %
fiz.zip | 645 | 135 | 20,93 %
我不能發現一個明顯的問題。收集更多數據。嘗試使用另一個文件。同樣的問題?無論文件大小如何,都會複製**完全相同的**字節數量?有類似的百分比?沒有?如果你嘗試使用內存中的字符串(使用'StringIO'使它看起來像一個文件),相同的結果?您是否將吞嚥異常的某處放在呼叫鏈上?嘗試在函數 – slezica
內使用本地try-catch,我使用文件大小更新了我的問題。沒有例外。 – tjati
每次嘗試時,相同的文件是否獲得相同的%?也許是,您可能是使用異步線程或進程來複制文件,並且在關閉文件之前您並未等待複製完成? – slezica