2010-01-07 50 views
1

我正面臨一些大數據文件的問題。 我需要跳過對這些文件執行一些操作。 我把文件的數據變成一個變量。 現在我需要獲取變量的字節,如果它大於102400,則打印一條消息。如何獲得python中的變量的字節數,就像wc -c在unix中給出的一樣

更新:我無法打開文件,因爲它存在於tar文件中。 內容已被複制到名爲'data'的變量中 我可以打印變量數據的內容。我只需要檢查它是否有超過102400字節。

感謝

+2

如果這是一個python問題,爲什麼你將它標記爲C? – 2010-01-07 12:47:51

+0

我懷疑他試圖標記爲'wc -c' – 2010-01-07 13:05:39

回答

2

只是檢查字符串的長度,則:

if len(data) > 102400: 
    print "Skipping file which is too large, at %d bytes" % len(data) 
else: 
    process(data) # The normal processing 
0

這個答案似乎是無關緊要的,因爲我似乎誤解了這個問題,目前已得到澄清。但是,如果有人發現了這個問題,同時用幾乎相同的字詞進行搜索,這個答案可能仍然是相關的:

只是以二進制方式打開文件

F =開放(文件名,「RB」)

讀取/跳過一堆並打印下一個字節。我使用了同樣的方法在一張zillion圖像中「修復」第n個字節。

6
import os 
length_in_bytes = os.stat('file.txt').st_size 
if length_in_bytes > 102400: 
    print 'Its a big file!' 

更新,以處理文件的tar文件

import tarfile 
tf = tarfile.TarFile('foo.tar') 
for member in tarfile.getmembers(): 
    if member.size > 102400: 
     print 'It's a big file in a tarfile - the file is called %s!' % member.name 
+0

我只是更新了這個問題。萬分感謝。 – randeepsp 2010-01-07 12:58:02

+0

@randeepsp我已更新示例以顯示使用tarfiles的示例 – 2010-01-07 13:05:50

+1

這比檢查len(數據)更好,因爲它完全跳過讀取大數據時的數據。 – 2010-01-07 15:09:58

2

如果我理解正確的問題,你想,如果他們太大跳過某些輸入文件。對於這一點,你可以使用os.path.getsize()

import os.path 
if os.path.getsize('f') <= 102400: 
    doit(); 
1

len(data)給你以字節爲單位的大小,如果是二進制數據。對於字符串,大小取決於所使用的編碼。

+0

我是一個新手,因此在巨大的代碼中感到困惑。謝謝 – randeepsp 2010-01-07 13:07:32

相關問題