如何在python中檢查檔案大小?

2021-10-01 17:23:07 字數 3204 閱讀 2116

我在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 並沒有清螢幕的命令,也沒有內建內建命令可以...