導航:首頁 > 編程語言 > python多文件編程

python多文件編程

發布時間:2023-06-11 08:42:45

㈠ 利用python編程,在多個打包壓縮的文件中搜索指定字元串。有很多xml文件

ziprar.py

__author__='williezh'
#!/usr/bin/envpython3

importos
importsys
importtime
importshutil
importzipfile
fromzipfileimportZIP_DEFLATED


#Zip文件處理類
classZFile(object):
def__init__(self,fname,mode='r',basedir=''):
self.fname=fname
self.mode=mode
ifself.modein('w','a'):
self.zfile=zipfile.ZipFile(fname,mode,compression=ZIP_DEFLATED)
else:
self.zfile=zipfile.ZipFile(fname,self.mode)
self.basedir=basedir
ifnotself.basedir:
self.basedir=os.path.dirname(fname)

defaddfile(self,path,arcname=None):
path=path.replace('//','/')
ifnotarcname:
ifpath.startswith(self.basedir):
arcname=path[len(self.basedir):]
else:
arcname=''
self.zfile.write(path,arcname)

defaddfiles(self,paths):
forpathinpaths:
ifisinstance(path,tuple):
self.addfile(*path)
else:
self.addfile(path)

defclose(self):
self.zfile.close()

defextract_to(self,path):
forpinself.zfile.namelist():
self.extract(p,path)

defextract(self,fname,path):
ifnotfname.endswith('/'):
fn=os.path.join(path,fname)
ds=os.path.dirname(fn)
ifnotos.path.exists(ds):
os.makedirs(ds)
withopen(fn,'wb')asf:
f.write(self.zfile.read(fname))


#創建Zip文件
defcreateZip(zfile,files):
z=ZFile(zfile,'w')
z.addfiles(files)
z.close()


#解壓縮Zip到指定文件夾
defextractZip(zfile,path):
z=ZFile(zfile)
z.extract_to(path)
z.close()


#解壓縮rar到指定文件夾
defextractRar(zfile,path):
rar_command1="WinRAR.exex-ibck%s%s"%(zfile,path)
rar_command2=r'"C:WinRAR.exe"x-ibck%s%s'%(zfile,path)
try:
res=os.system(rar_command1)
ifres==0:
print("PathOK.")
except:
try:
res=os.system(rar_command2)
ifres==0:
print("Successtounrarthefile{}.".format(path))
except:
print('Error:cannotunrarthefile{}'.format(path))


#解壓多個壓縮文件到一個臨時文件夾
defextract_files(file_list):
newdir=str(int(time.time()))
forfninfile_list:
subdir=os.path.join(newdir,fn)
ifnotos.path.exists(subdir):
os.makedirs(subdir)
iffn.endswith('.zip'):
extractZip(fn,subdir)
eliffn.endswith('.rar'):
extractRar(fn,subdir)
returnnewdir


#查找一個文件夾中的某些文件,返迴文件內容包含findstr_list中所有字元串的文件
deffindstr_at(basedir,file_list,findstr_list):
files=[]
forr,ds,fsinos.walk(basedir):
forfninfs:
iffninfile_list:
withopen(os.path.join(r,fn))asf:
s=f.read()
ifall(iinsforiinfindstr_list):
files.append(os.path.join(r,fn))
returnfiles


if__name__=='__main__':
files=[iforiinsys.argv[1:]ifnoti.startswith('-')]
unzipfiles=[iforiinfilesifi.endswith('.zip')ori.endswith('.rar')]
xmlfiles=[iforiinfilesifi.endswith('.xml')]
save_unzipdir=Trueif'-s'insys.argvelseFalse
findstr=[i.split('=')[-1]foriinsys.argvifi.startswith('--find=')]
findstring=','.join(['`{}`'.format(i)foriinfindstr])
newdir=extract_files(unzipfiles)
result=findstr_at(newdir,xmlfiles,findstr)
ifnotresult:
msg='Noneofthefile(s)containthegivenstring{}.'
print(msg.format(findstring))
else:
msg='{}file(s)containthegivenstring{}:'
print(msg.format(len(result),findstring))
print(' '.join([i.replace(newdir+os.sep,'')foriinsorted(result)]))

ifnotsave_unzipdir:
shutil.rmtree(newdir)
$python3ziprar.pyaaa.zipaaa2.zipaaa3.zipaaa.xmlaaa1.xmlaaa2.xml--find="Itwas"--find="when"
Noneofthefile(s)containthegivenstring`Itwas`,`when`.
$python3ziprar.pyaaa.zipaaa2.zipaaa3.zipaaa.xmlaaa1.xmlaaa2.xml--find="Itwas"--find="I"
2file(s)containthegivenstring`Itwas`,`I`:
aaa.zip/aaa2.xml
aaa2.zip/aaa2.xml
$python3ziprar.pyaaa.zipaaa2.zipaaa3.zipaaa.xmlaaa1.xmlaaa2.xml--find="Itwas"
2file(s)containthegivenstring`Itwas`:
aaa.zip/aaa2.xml
aaa2.zip/aaa2.xml

㈡ Python項目文件(多個子文件,.py文件等)如何用pyinstaller打包為可執行exe文件

文件構成

使用pyinstaller打包的時候,僅打包.py文件,其餘依賴項只需在打包完成後,拷入打包生成的根目錄即可。

多文件打包

命令格式如下,下命令為一條命令,為方便顯示做了分行處理:

pyinstaller [主文件] -p [其他文件1] -p [其他文件2]
--hidden-import [自建模塊1]
--hidden-import [自建模塊2]
# 以上為一整條命令

以上文圖中結構為例,在根目錄打開命令窗口,輸入命令:

pyinstaller main.py -p mysql.py -p other.py --hidden-import mysql --hidden-import other

在目錄結構:「程序根目錄distmain」 下可以找到生成的main.exe。將其他依賴文件拷貝進入「程序根目錄distmain」 下,即可運行。

㈢ 如何在Python中實現多文件編譯

如果你要用到那個文件代碼,就在主文件里寫上import
舉個例子
A.py
B.py
我的主模塊在A里,A要調用B里的函數或者類,那麼在A中寫import B.py
這樣編譯時就會編譯用到B中的部分代碼。
另外說一句,我對python感覺是運行時用不到的代碼,它就不編譯。好像是編編譯邊執行的那種吧

㈣ 多個python文件相互調用

假如a.py這個畝橋乎文件有一消岩個函數fun,那麼在b.py這個文件就可以調用這個函數,只需要寫一行代碼即可迅悉:from a import fun

㈤ 關於多個python文件共享數據

簡單。一個是通過線程同步。另一個就是全局變數global,加上這個修飾就可以了。python一個進程里的所有東西,都是在一個內存空間的。只要加了global就可以訪問。可以用這個全局變數通訊,效果也是一樣的。python一個進程只用一個CPU核。所以不存在樓下說的地址空間不一樣的問題。

進程間同步也有幾個方法。通常使用共享內存,管道,不過最常用的還是socket或者是資料庫。還有些分布式組件不是很好用。我通常用mutliprocessing,裡面有現成的進程通信辦法。

看到你的需求。我覺著可以用兩個變數,一個變數記錄修改狀態,另一個變數要求先鎖再進行修改。目前看來如果僅僅是python里實現。直接使用memcache這個工具就可以解決。一個程序讀寫,其它的程序只需要輪洵就可以了。從原理上講memcache是一個內存資料庫。

㈥ python如何讀取多個Xml文件

使用open函數打開一個文件,參數1:文件路徑 ; 參數2:讀取方式 ; 返回一個文件描述符。
例如: file=open('abc.txt','r');

讀取文件內容用read函數,無參數。
例如:file.read()

如果想讀取多個則多open幾個文件即可。

㈦ 高手看過來,python多文件處理問題

open的讀寫格式錯了,
fout後面的"w+"改成"a"

閱讀全文

與python多文件編程相關的資料

熱點內容
python集成包 瀏覽:299
如何用電腦解壓縮文件 瀏覽:446
pubg用什麼伺服器 瀏覽:526
田漢pdf 瀏覽:661
記錄儀如何安裝安卓系統 瀏覽:594
python求灰度均值 瀏覽:756
c編譯器是系統軟體嗎 瀏覽:694
獲取伺服器內網地址 瀏覽:536
新手媽媽如何帶新生兒APP 瀏覽:157
java日程管理 瀏覽:376
高清視頻鏈接加密 瀏覽:407
新買的阿里雲伺服器怎麼配置 瀏覽:612
在線編譯器為什麼刷新還在 瀏覽:213
雲伺服器系統盤可以裝資料庫 瀏覽:906
php繪制圖形 瀏覽:588
支付伺服器異常怎麼辦 瀏覽:76
java撥號 瀏覽:868
er5200如何設置虛擬伺服器 瀏覽:573
網路中心伺服器叫什麼 瀏覽:459
isplay單片機下載器 瀏覽:482