第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Path 對象 + 字符串構(gòu)建 os.system() 命令?

如何使用 Path 對象 + 字符串構(gòu)建 os.system() 命令?

一只甜甜圈 2022-06-28 18:03:37
我正在嘗試編寫一個腳本,該腳本從配置文件中提取一些路徑并調(diào)用系統(tǒng) shell 以使用該路徑作為命令的一部分來運(yùn)行命令。它基本上是一個解壓縮目錄中所有文件的摘要腳本。請記住,我正在自學(xué) Python,這是我的第一個 Python 腳本,也是我的第一篇文章。請?jiān)徫以诙Y儀方面的任何錯誤。目標(biāo)是讓命令“C:\Program Files\WinRAR\Rar.exe x”在目錄上運(yùn)行。不幸的是,我了解到 Python 不允許您將字符串連接到 Path 對象,大概是因?yàn)樗鼈兪莾煞N不同的元素類型。我有以下內(nèi)容:在配置文件中:[Paths]WinrarInstallPath = C:\Program Files\WinRAR\NewFilesDirectory = M:\Directory\Where\Rar Files\Are\Located腳本:**SOME CODE***new_files_dir = Path(config.get('Paths', 'NewFilesDirectory'))winrar_dir = Path(config.get('Paths', 'WinrarInstallPath'))**SOME MORE CODE**os.chdir(new_files_dir)for currentdir, dirnames, filenames in os.walk('.'):    os.system(winrar_dir + "rar.exe x " + os.getcwd() + currentdir[1:] + '\\*.rar')這給了我錯誤“TypeError:+的不支持的操作數(shù)類型:'WindowsPath'和'str'”我試過了os.system(str(winrar_dir) + "rar.exe x " + os.getcwd() + currentdir[1:] + '\\*.rar')但它不處理目錄名稱中的空格。我也試過os.system(os.path.join(winrar_dir, "rar.exe x ") + os.getcwd() + currentdir[1:] + '\\*.rar')結(jié)果相同我意識到我可以從一開始就將它視為一個字符串并執(zhí)行以下操作wrd = config.get('Paths', 'WinrarInstallationPath')winrar_dir = '"' + wrd + '"'os.system(winrar_dir + "rar.exe x " + os.getcwd() + currentdir[1:] + '\\*.rar')但是到目前為止,Python 一直很流暢,而且感覺很笨拙,所以我覺得我錯過了一些東西,但到目前為止我還沒有找到答案。
查看完整描述

2 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個贊

不要使用os.system. 使用subprocess.call

os.system(winrar_dir + "rar.exe x " + os.getcwd() + currentdir[1:] + '\\*.rar')

該列表實(shí)際上就是 argv 數(shù)組。無需為外殼報(bào)價。

subprocess.call([os.path.join(winrar_dir, 'rar.exe'), 'x', os.getcwd(), os.path.join(currentdir[1:], '*.rar')])

您可能還會看到我不喜歡 pathlib 模塊。我使用了它的前身路徑,只發(fā)現(xiàn)它的 walkfiles 方法有用。


查看完整回答
反對 回復(fù) 2022-06-28
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個贊

如果您要嘗試添加到一個pathlib.Path對象,您需要添加它的joinpath方法以添加到路徑中,而不是+像您將用于字符串一樣的運(yùn)算符(這就是給您的TypeError)。


# From the docs:

Path('c:').joinpath('/Program Files')

Out[]: PureWindowsPath('c:/Program Files')

如果您仍然遇到問題,請使用Path.exists()方法或Path.glob方法測試您正在讀取的路徑是否指向正確的位置。


查看完整回答
反對 回復(fù) 2022-06-28
  • 2 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號