python文件重名
『壹』 python如何將兩個文件價中所有同名excel秋褲對比
使用xlrd和xlwt包,首先安裝這兩個包。定義contrast函數,測試contrast函數,把程序打包成exe文件。導入tkinter包,寫個函數用來選擇路徑,初始化變數,畫出UI界面,點擊對比按鈕後的函數。
接下來就是把這個py程序打包,使用pyinstaller這個包pipinstallpyinstaller。安裝成功之後,按鍵盤win+R打開運行,輸入cmd,回車運行。進入程序所在文件夾。
因為有統計成員到會情況的任務,每次匯總時都很麻煩,需要一個個對應騰訊會議導出名單的成員,然後在總表上進行標記,所以就寫了本程序來減少統計的復雜度。
『貳』 python中,如果自己寫的模塊與系統模塊重名,該怎麼調用系統的模塊
sys.path是一個list,存放了當前所有import搜索的路徑。
絕大多數情況下,首個元素是"",即空串,也就是說,當你import re的時候,首先搜索的是"re",這時候就會直接在當前目錄搜索到re。如下圖:
解決方法也有不止一個:
1,在當前目錄創建一個子文件夾,例如mine,在mine里放一個__init__.py,不用有代碼,空文件即可。使用的時候:import mine.re
2,在sys.path上做手腳,把第一個空串挪到最後面去:
import sys
sys.path = sys.path[1:]
sys.path.append("")
這樣當前目錄會跑到最後面去,從而達到最後搜索的目的。
不過這很可能有副作用,即你創建的模塊,不能和前面搜索路徑里的任何文件重名,否則會無法import你的模塊。
這也是為什麼默認把當前路徑放在最前搜索的原因,因為是用戶自己寫的,顯然優先順序最高。
盡管就你的問題作出分析和提出一些可能的解決辦法,但是嚴重不建議在實際工程起和系統模塊重名的文件名,這是自找麻煩。
當然,研究探討它的實現原理,始終是值得肯定的。
最後強調一下,當你在當前文件夾創建了一個sys.py時,方法2不好用!
『叄』 Python繼承中有兩個基類方法重名的問題。在線求解答~~~
1:在DerivedClass2
中,執行init
用了2個函數
BaseClass1.__init__(self)
BaseClass2.__init__(self)
所以
self.name
最後是
'BaseClass2_Name'
2:
調用class3.getname()
根據python多重繼承規則,從左到右,深度優先,調用的是BaseClass1的getname方法。
因此輸出這個結果。
『肆』 python命名空間是什麼
在Python中,所有的名字都存在一個空間中,它們在該空間中存在和被操作——這就是命名空間。它就像一個盒子,每一個變數名字都對應裝著一個對象。當查詢變數的時候,會從該盒子裡面找到相應的對象。
【定義】
名稱到對象的映射。命名空間是一個字典的實現,鍵為變數名,值是變數對應的值。各個命名空間是獨立沒有關系的,一個命名空間中不能有重名,但是不同的命名空間可以重名而沒有任何影響。
相關推薦:《Python教程》
【分類】
python程序執行期間會有2個或3個活動的命名空間(函數調用時有3個,函數調用結束後2個)。按照變數定義的位置,可以劃分為以下3類:
Local,局部命名空間,每個函數所擁有的命名空間,記錄了函數中定義的所有變數,包括函數的入參、內部定義的局部變數。
Global,全局命名空間,每個模塊載入執行時創建的,記錄了模塊中定義的變數,包括模塊中定義的函數、類、其他導入的模塊、模塊級的變數與常量。
Built-in,python自帶的內建命名空間,任何模塊均可以訪問,放著內置的函數和異常。
【生命周期】
Local(局部命名空間)在函數被調用時才被創建,但函數返回結果或拋出異常時被刪除。(每一個遞歸函數都擁有自己的命名空間)。
Global(全局命名空間)在模塊被載入時創建,通常一直保留直到python解釋器退出。
Built-in(內建命名空間)在python解釋器啟動時創建,一直保留直到解釋器退出。
各命名空間創建順序:python解釋器啟動 ->創建內建命名空間 -> 載入模塊 -> 創建全局命名空間 ->函數被調用 ->創建局部命名空間
各命名空間銷毀順序:函數調用結束 -> 銷毀函數對應的局部命名空間 -> python虛擬機(解釋器)退出 ->銷毀全局命名空間 ->銷毀內建命名空間
python解釋器載入階段會創建出內建命名空間、模塊的全局命名空間,局部命名空間是在運行階段函數被調用時動態創建出來的,函數調用結束動態的銷毀的。
『伍』 如何解決模塊名稱沖突(python)
如果你有兩個同名的模塊,那麼你只能導人它們中的一個——默認情況下,Python總是會選擇在模塊搜索路徑sys.path中最左邊的那一項。如果你偏愛的模塊和頂層腳本在同一目錄下,那就不成問題;由於頂層腳本的主目錄總是模塊搜索路徑中的第一項,因此它的內容總是會首先被自動定位。然而對於跨目錄的導入,模塊搜索路徑的線性本質意味著同名的文件會產生沖突。
要修復這一沖突,要麼避免同名文件。如果你需要同時訪問兩個同名的文件,那麼就要把兩個源文件分別放入子目錄中,這樣包導入目錄名稱將使得模塊引用唯一。只要外圍的包目錄名稱是唯一的,你就能訪問同名模塊中的任意一個,或是全部的兩個。
注意,如果你不小心為自己的模塊使用了一個名稱,而它碰巧和你需要使用的標准庫模塊的名稱相同,那麼也會出現這一問題。這是因為程序主目錄(或是模塊路徑中靠前的另一個目錄)下的本地模塊會隱藏和替換標准庫模塊。
要修復這種覆蓋,要麼避免使用和你需要的另一模塊相同的名稱,要麼把模塊放到一個包目錄下然後使用Python 3.X的包相對導入模型(包相對導入在2.X版本中是一個可選的功能)。在包相對導入模型下,普通導入會跳過包目錄,因此你可以獲取標准庫版本,但在必要時特殊的點號開頭導入語句仍然可以選取同名模塊的本地版本。
『陸』 想用python將一個文本文件中的內容交換一下,怎麼寫
f = open('newfile.txt','w')
tmp = 'some_random_unique_string' #就是用個中間變數,方便交換a和b
f.write(open('oldfile.txt').read().replace(a,tmp).replace(b,a).replace(tmp,b))
f.close()
『柒』 求助一個python腳本用於批刪除同文件夾下的同名不同後綴的文件
以下代碼在MacOS系統下測試通過 使用前請自行配置需要操作的文件夾路徑(dir_path),默認操作文件夾為腳本所在路徑。提示刪除操作時,輸入y或者Y會刪除文件,直接回車或者輸入其他任意字元為跳過。具體實現代碼如下,縮進參考截圖:
import glob
from pathlib import Path
dir_path = '.'
files = glob.glob('*.ARW')
for i in files:
is_exist = Path(Path(i).stem + '.JPG')
if not is_exist.is_file():
verify = input("{} 對應.JPG文件已被刪除,請選擇操作Y/N:".format(i))
if verify.lower() == 'y':
try:
Path(i).unlink()
print("成功刪除文件 {}".format(i))
except OSError as e:
print("異常:文件 {} 未被刪除!".format(i))
else:
print("跳過文件 {}".format(i))
continue
else:
print("操作完成,再次運行腳本可重新檢測!")
測試輸出:
0009.ARW 對應.JPG文件已被刪除,請選擇操作Y/N:n
跳過文件 0009.ARW
0008.ARW 對應.JPG文件已被刪除,請選擇操作Y/N:y
成功刪除文件 0008.ARW
0001.ARW 對應.JPG文件已被刪除,請選擇操作Y/N:y
成功刪除文件 0001.ARW
操作完成,再次運行腳本可重新檢測!
『捌』 python 怎麼將輸入目錄內的文件拷貝至另一個目錄的同名文件夾
這是最近寫的一個類似代碼,你拿去改改
import shutil
import os
import logging
import sys
logger = logging.getLogger(__name__)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
def cp_or_mv2(src_file, des_dir, is_):
print(src_file, des_dir)
if os.path.isfile(src_file):
logger.info(f'from file {src_file}')
if is_:
shutil.2(src_file, des_dir)
logger.info(f' to {des_dir}')
else:
des_file = os.path.join(des_dir, src_file)
shutil.move(src_file, des_file)
logger.info(f'move to {des_file}')
else:
logger.info(f'from dir {src_file}')
des_dir_level1 = os.path.join(des_dir, src_file)
shutil.tree(src_file, des_dir_level1, dirs_exist_ok=True)
logger.info(f'to {des_dir_level1}')
if not is_:
shutil.rmtree(src_file)
logger.info(f'deleted {src_file}')
def process_files_in_txt(txt_file, src_dir, des_dir, is_=True):
os.chdir(src_dir)
with open(txt_file, 'r', encoding='utf8', errors='ignore') as f:
for line in f.readlines():
src_file = line.strip()
# logger.info(src_file)
if os.path.exists(src_file):
cp_or_mv2(src_file, des_dir, is_)
else:
logger.warning(f'{src_file} missing!')
if __name__ == '__main__':
process_files_in_txt(r"D:\D\需要拷貝.txt", # 哪些文件(夾)
r"D:\D\Desktop", # 從哪個文件夾
r"D:\D\新建文件夾", # 到哪個文件夾
is_=False) # True復制,False剪切
『玖』 只知道文件名的情況下,怎麼用python獲取所有同名文件的路徑
獲取文件路徑可以使用OS模塊,代碼如下:
importos
srcPath=r"WallReference.pdf"
path=os.path.abspath(srcPath)
print"全路徑為:",path
print"路徑名,文件名",os.path.split(path)
導入os模塊;
需要操作的文件;
獲取文件的全路徑,即帶盤符的路徑;
輸出全路徑;
輸出路徑名和文件名;
『拾』 python中,怎樣將不同文件夾下同名文本文件合並為一個文件
import shutil
shutil.move(src, dst)