我從我的Django UI上傳.rpm文件。我能夠在所需位置成功上傳的文件...rpm文件大小在python上傳過程中增加(損壞)
問題: 有上傳後,並且由於這個我收到錯誤增加文件大小 - 「錯誤的包讀取頭「試圖提取的.rpm文件
下面是我用來上傳文件中的函數時:
// RPM_DIR = some DIR path where I am saveing the file"
def save_temporarily(file, name):
with open(os.path.join(RPM_DIR,str(name)),"wb+") as destination:
for chunk in file.chunks():
destination.write(chunk)
destination.closed
f.seek(0)
return os.path.join(RPM_DIR,str(name))
輸出的ls -ltr
-rw-R - R-- 1根根3748319月20 new_file.rpm(對於新上載的文件)
-rw-R - R-- 1根根3735417 2月20日的xyz .rpm(適用於原始文件)
有增加的大小...
請建議如何擺脫這個問題...... 特別是我期待的,如果可能的
以下解決方案- 我們可以如何從文件中刪除多餘的字節並將其提取出來。
- 有沒有辦法用python上傳文件而不打開並保存到指定的位置。
- 爲什麼額外的字節會被追加到文件中。
編輯
我也試圖改變寫入功能
output_file_path = "/u001/Test/"+ file.name
result_file = open(output_file_path,"wb")
while True:
file_content = file.read(1024) ''' or simply file.read() '''
if not file_content:
break
result_file.write(file_content)
result_file.write(file_content)
result_file.close()
我得到了相同的輸出沒有變化......我實際運行保存的.rpm文件後,下面的命令(看到details):
rpm2cpio '+str(patch_path)+' | cpio -idm
,並得到了以下錯誤:
<open file 'rpm2cpio /u001/Test/php-5.1.4-1.esp1.x86_64.rpm | cpio -idm ', mode 'r' at 0x7f6334239030>
error: rpm2cpio: headerRead failed: region trailer: BAD, tag 491913216 type 508690432 offset -525467648 count 542113792
error reading header from package
cpio: premature end of archive
PS:這可能有助於瞭解多一點發生了什麼
感謝,
是的,你是正確的文件越來越損壞。 ** file.chunk()**返回對象的_string_類型 –
我寫了下面的測試程序並且複製完美: 'import os fileName = os.path.expanduser('〜/ Downloads/somefile.rpm' ) F =開放(文件名) output_file_path = 「/ TMP /測試 - 」 + os.path.basename(f.name) result_file =開放(output_file_path, 「WB」) 而真: FILE_CONTENT = F .read(1024) 如果不是FILE_CONTENT: 突破 result_file.write(FILE_CONTENT) result_file.write(FILE_CONTENT) result_file.close()' 我懷疑你的問題將與你正在閱讀的內容有關。 – 6EQUJ5
我試着改變了我正在閱讀的文件,對於其中的一些文件而言,它的一些功能失效了。我認爲你是正確的問題是我正在閱讀的文件..感謝您的努力,這真的很有用:) –