我正在制作一个脚本,将给定目录中的文件重命名为“CoronaVirus”,测试时我注意到它只在给定目录中执行,而不在其子文件夹中。代码如下所示(注意:此代码有效):
import os
PRF = input("Input Directory: ")
def main():
for file in PRF:
for filename in os.listdir(PRF):
i = 0
dst = "CoronaVirus" + str(i)
src = PRF + filename
dst = PRF + dst
os.rename(src , dst)
i += 1
if __name__ == "__main__"":
main()
在我看到它只经过给定的目录后,我尝试添加一个名为subdir的新语句(如果不是它的名称,请原谅),认为它会使它看起来像一个文件夹。这使得代码看起来像这样:
import os
PRF = input("Input Directory: ")
def main():
for subdir , file in PRF:
for filename in os.listdir(PRF):
i = 0
dst = "CoronaVirus" + str(i)
src = PRF + filename
dst = PRF + dst
os.rename(src , dst)
i += 1
if __name__ == "__main__"":
main()
但这似乎不起作用,因为它会产生以下错误:
Traceback (most recent call last):
File "C:/Users/Acer/Desktop/Python/Pyinstaller/OSM.py", line 17, in <module>
main()
File "C:/Users/Acer/Desktop/Python/Pyinstaller/OSM.py", line 7, in main
for subdir , file in PRF:
ValueError: not enough values to unpack (expected 2, got 1)
有人能解释为什么会这样吗?我是一个初学者,希望以后避免这个问题。谢谢
如果希望它遍历当前目录和所有子目录,我将使用os.walk
我不确定这些文件的顺序,但至少它们都会被浏览
我还必须从循环中删除I=0,并添加一些确保保持扩展的内容
如果有zip文件,您可能应该首先将这些文件解压缩到文件夹中,因为这不会在其中查找,而是将zip文件夹命名为“CoronaVirusN.zip”
我输入了一个if来排除zip文件
输入
PRF
不是包含2个值的元组,这是for循环所期望的:此外,
os.listdir(PRF)
需要字符串作为参数,因此PRF
不能既是字符串又是元组我相信你想要的是:
有关如何设置
files
变量的信息,请参见此处:List files in directory相关问题 更多 >
编程相关推荐