2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個贊
嘗試這個。在這種情況下,我更喜歡編寫一個輔助函數(shù)而不是重復(fù)輸入(幾乎)相同的長行(太容易出錯)。同樣,如果列表理解太長,我更喜歡循環(huán)形式。
import os
def files(path):
result = []
for name in os.listdir(path):
fullname = os.path.join(path, name)
if os.path.isfile(fullname):
result.append(name)
return result
path = r"C:\Users\DELL PC\Desktop\Msc Project\MSc project\dataset"
for file in os.listdir(path):
print(file)
lowfiles = files(os.path.join(path, r"Training data\LOW"))
highfiles = files(os.path.join(path, r"Training data\HIGH"))
澄清下面的評論:以下將進(jìn)入一個無限循環(huán),打印 1, 2, 3, 1, 2, 3, 1, 2, 3 ...
a = [1, 2, 3]
for i in a:
a.append(i)
print(i)
永遠(yuǎn)不要向正在執(zhí)行循環(huán)的容器添加元素。
在這里,您正在嘗試執(zhí)行此操作:
for i in lowfiles:
lowfiles.append([i, 'Low'])
因此,如果lowfiles最初包含["file1", "file2"],則在第一個循環(huán)之后它將是["file1", "file2", ["file1", "Low"]],然后["file1", "file2", ["file1", "Low"], ["file2", "Low"], [["file1", "Low"], "Low"], ...]。你不想那樣做。
我只是猜測,但您想通過在名稱末尾附加“低”來重命名文件,然后:
首先修改files上面的函數(shù)以追加fullname(有目錄)而不是只有name沒有目錄),這樣你就不必os.path.join一次又一次。
要重命名文件,請執(zhí)行以下操作:
for fullname in files(os.path.join(path, r"Training data\LOW")):
os.rename(fullname, fullname + "Low")
如果您不想更改文件擴(kuò)展名,則可以執(zhí)行以下操作:
for fullname in files(os.path.join(path, r"Training data\LOW")):
base, ext = fullname.rsplit(".", 1)
os.rename(fullname, base + "Low." + ext)
如果您不想重命名文件,則必須說明您要嘗試做什么。
添加回答
舉報(bào)