Python 使用os.walk传递变量
我试图通过制作一个小脚本来学习如何传递变量,以便将所有文件从输入目录路径复制到另一个文件夹 我有一个函数,它验证用户提供的输入路径,然后我希望它作为变量传递给我的move_files函数 这是我试图尝试的代码:Python 使用os.walk传递变量,python,os.walk,Python,Os.walk,我试图通过制作一个小脚本来学习如何传递变量,以便将所有文件从输入目录路径复制到另一个文件夹 我有一个函数,它验证用户提供的输入路径,然后我希望它作为变量传递给我的move_files函数 这是我试图尝试的代码: def verification(): verify_path = input() if verify_path[0] == "\"" and verify_path[-1] != '"': verify_path = verify_path[1:]
def verification():
verify_path = input()
if verify_path[0] == "\"" and verify_path[-1] != '"':
verify_path = verify_path[1:]
pass
elif verify_path[:-1] == "\"" and verify_path[0] != '"':
verify_path = verify_path[:-1]
pass
elif verify_path[0] == '"' and verify_path[-1] == '"':
verify_path = verify_path[1:-1]
pass
else:
pass
print ('Your path is: ' + (verify_path) + '\nIs this okay? If so, hit the y key. If this is not okay hit the n key to change to path or x to exit')
char = bytes.decode(msvcrt.getch(), encoding="utf-8")
if char.upper() == 'Y':
pass
elif char.upper() != 'Y':
print ("Please copy and paste in a new path")
verify_path = input()
elif char.upper() != 'x':
exit()
else:
pass
return verify_path
def move_files(original_path):
cwd = os.getcwd()
for root, dirs, files in os.walk(original_path):
for file in files:
try:
new_path = os.mkdir(os.path.join(cwd,'Copy Folder'))
except FileExistsError:
continue
path_file = os.path.join(root, dirs, file)
print(path_file)
shutil.copy2(path_file,new_path)
def main():
move_files(original_path =verification())
main()
我最初遇到一个错误,“dirs”是一个未使用的变量,所以我将它包含在我的path_文件变量中
然后我遇到了另一个错误“UnboundLocalError:localvariable”file“在赋值之前引用”
用于复制文件
传递变量,但我遇到了麻烦
任何方向都会有帮助 您正在path_file=os.path.joinroot、dirs、file中使用file变量
for循环外的行,该行使python抛出错误“UnboundLocalError:localvariable”file“在赋值之前引用”
此外,您还试图在for循环中多次创建“复制文件夹”。我认为在复制文件之前,应该在for循环之外只做一次
代码中的更正:
def move_FILES原始_路径:
cwd=os.getcwd
尝试:
new_path=os.mkdiros.path.joincwd,“复制文件夹”
除文件ExistError外:
通过
对于os.U路径中的根、目录和文件:
对于文件中的文件:
path_file=os.path.joinroot,文件
打印路径文件
shutil.copy2path\u文件,新路径
谢谢@Ajay Dabas,看起来上面的代码可以正常工作,但是由于continue不在循环中,所以出现了一个错误?非常奇怪的是,在for块中有相同的缩进,这没问题,但是一旦它从for块之外被取出来,我就得到了错误抱歉,它应该是pass,而不是continue,在循环之外。我更新了答案,一切都很好。我发现,虽然我必须在def move_files函数之外创建一个变量,但对于我的“Copy Folder”,否则我仍然会收到错误“UnboundLocalError:localvariable”new_path“referenced before assignment”。