我在windows中編寫python指令碼。 我想根據檔案大小做一些事情。 例如,如果大小大於0,我將向某人傳送電子郵件,否則繼續其他操作。
如何檢查檔案大小?
其他答案適用於實際檔案,但是如果您需要適用於「類檔案的物件」的檔案,請嘗試以下操作:
# f is a file-like object.
f.seek(0, os.seek_end)
size = f.tell()
在我有限的測試中,它適用於真實檔案和stringio。 (python 2.7.3。)當然,「類檔案物件」 api並不是嚴格的介面,但是api文件建議類檔案物件應支援seek()
和tell()
。
編輯
此檔案與os.stat()
之間的另乙個區別是,即使您沒有讀取檔案的許可權,也可以對檔案進行stat()
。 顯然,除非您具有閱讀許可,否則搜尋/講述方法將無法工作。
編輯2
在喬納森的建議下,這是乙個偏執的版本。 (以上版本將檔案指標留在檔案的末尾,因此,如果您嘗試從檔案中讀取檔案,則將返回零位元組!)
# f is a file-like object.
old_file_position = f.tell()
f.seek(0, os.seek_end)
size = f.tell()
f.seek(old_file_position, os.seek_set)
使用os.path.getsize
:
>>> import os
>>> b = os.path.getsize("/path/isa_005.***")
>>> b
2071611l
輸出以位元組為單位。
使用os.stat
,並使用結果物件的st_size
成員:
>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511l, 769l, 1, 1032, 100, 926l, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926l
輸出以位元組為單位。
import os
def convert_bytes(num):
"""this function will convert bytes to mb.... gb... etc
"""for x in ['bytes', 'kb', 'mb', 'gb', 'tb']:
if num < 1024.0:
return "%3.1f %s" % (num, x)
num /= 1024.0
def file_size(file_path):
"""this function will return the file size
"""if os.path.isfile(file_path):
file_info = os.stat(file_path)
return convert_bytes(file_info.st_size)
# lets check the file size of ms paint exe
# or you can use any file path
file_path = r"c:\windows\system32\mspaint.exe"
print file_size(file_path)
結果:
6.1 mb
使用pathlib
( 在python 3.4中新增或在pypi上可用的pathlib
):
from pathlib import path
file = path() / 'doc.txt' # or path('./doc.txt')
size = file.stat().st_size
這實際上只是os.stat
周圍的介面,但是使用pathlib
提供了一種訪問其他檔案相關操作的簡便方法。
嚴格遵循這個問題,python**(+偽**)將是:
import os
file_path = r""
if os.stat(file_path).st_size > 0:
else:
如果我想從bytes
轉換為任何其他單位,我將使用乙個bitshift
技巧。 如果您將右移10
,則基本上將其移位乙個順序(多個)。
示例:5gb are 5368709120 bytes
print (5368709120 >> 10) # 5242880 kilo bytes (kb)
print (5368709120 >> 20 ) # 5120 mega bytes(mb)
print (5368709120 >> 30 ) # 5 giga bytes(gb)
#get file size , print it , process it...
#os.stat will provide the file size in (.st_size) property.
#the file size will be shown in bytes.
import os
fsize=os.stat('filepath')
print('size:' + fsize.st_size.__str__())
#check if the file size is less than 10 mb
if fsize.st_size < 10000000:
process it ....
如何在Linux系統中檢查檔案的許可權是否小於乙個值
我編寫了乙個shell函式,使用這個函式需要傳兩個引數 檔案絕對路徑和乙個三位整數。通過這個函式可以檢查檔案許可權是否小於等於你給定的值。submod chnum echo realmod sed y rwx 4210 export user 0 export group 0 export othe...
Python 如何檢查檔案是否存在
在python中,我們可以使用os.path.isfile 或pathlib.path.is file python 3.4 來檢查檔案是否存在。python 3.4的新功能 from pathlib import path fname path c test abc.txt print fname...
如何在 Python 中清屏
在很多時候,如果我們在控制台中使用 python,隨著時間的推移,可能會發現螢幕越來越亂。如下圖,我們跑了不少的測試程式,在螢幕上有很多的輸出。在 windows 中,我們會使用 cls 命令清屏。在 python,應該怎麼樣才能清屏呢?其實 python 並沒有清螢幕的命令,也沒有內建內建命令可以...