Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用os.walk传递变量_Python_Os.walk - Fatal编程技术网

Python 使用os.walk传递变量

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:]

我试图通过制作一个小脚本来学习如何传递变量,以便将所有文件从输入目录路径复制到另一个文件夹

我有一个函数,它验证用户提供的输入路径,然后我希望它作为变量传递给我的move_files函数

这是我试图尝试的代码:

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”。