2 回答

TA貢獻(xiàn)1884條經(jīng)驗 獲得超4個贊
你可以使用os.path.getsize我更喜歡的。您也不需要遍歷樹來查找這些文件:您可以只使用 glob 和遞歸:
import os
import glob
csvfiles = [file for file in glob.iglob('CSVDIR/**/*.csv',recursive=True) if os.path.getsize(file) > 100]
任何時候您使用 glob.glob 或 glob.iglob 遞歸時,您都需要像我在文件路徑搜索模式中所做的那樣包含 **。我在這里使用 iglob 是因為我喜歡它返回迭代器的方式,但是您可以使用 glob 而不是它返回一個列表 - 如果您想將 glob 調(diào)用與列表理解隔離以檢查其元素,您可能想要這樣做。

TA貢獻(xiàn)1789條經(jīng)驗 獲得超10個贊
我現(xiàn)在選擇了不同的解決方案。
@Aran-Fey 為什么這么咄咄逼人。?我認(rèn)為他們也想幫助新手程序員,而不是給出粗暴的評論。幸運的是,還有其他人可以理解一個愚蠢的問題。
for root, dirs, files in os.walk(CSVDIR):
for file in files:
S = os.path.getsize((CSVDIR)+(file))
if S > 3:
if file.endswith('.csv'):
print (file)
fullname = os.path.join(root, file).replace('/', '/')
filename = os.path.splitext(os.path.basename(fullname))[0]
uri = 'file:///%s?crs=%s&delimiter=%s&xField=%s&yField=%s&decimal=%s&useHeader=no&' % (fullname, 'EPSG:4326', ';', 'Field_8', 'Field_9', ',')
layer = QgsVectorLayer(uri, 'my_layer', 'delimitedtext')
QgsVectorFileWriter.writeAsVectorFormat(layer, DESTDIR + '/' + filename + '.shp', 'CP1250', layer.crs(), 'ESRI Shapefile')
添加回答
舉報