首页 > 解决方案 > 在 Python 中从外部文件中读取变量值

问题描述

目标:通过从包含要复制的文件名列表的外部文件中将每个文件名作为变量调用到 Python 脚本中,将选定文件从一个目录批量复制到同一远程服务器上的另一个目录。

问题:我需要复制超过 1000 个文件,因此将文件名粘贴到脚本本身的列表或字典中似乎没有意义。我可以很好地从外部文件读取和打印文件名。

def main():
    f = open("file-list.txt", "r")
    if f.mode == 'r':
        flist = f.readlines()
        for x in flist:
            print(x.rstrip('\n'))
            
if __name__ == "__main__":
    main()
    
Output:
file-1.txt
file-2.txt

但是,为了按顺序复制文件,我需要遍历 file-list.txt 并将这些文件名作为变量调用到 shutil.copy 语句中;但这会引发无效的语法错误。

import os
from os import path
import shutil

def main():
    f = open("file-list.txt", "r")
    if f.mode == 'r':
        flist = f.readlines()
        for x in flist:
            shutil.copy(r"folder_1/"%s","folder_2/"%s") % x    
            
if __name__ == "__main__":
    main()

Output:
File "<ipython-input-3-223c95b85768>", line 10
    shutil.copy(r"folder_1/"%s","folder_2/"%s") % x
                                ^
SyntaxError: invalid syntax

我觉得我缺少一些基本的东西,所以任何关于解决方案的提示或建议都会受到欢迎!

解决方案- 感谢所有评论者!

import shutil

def main():
    cleanlist =[]
    f = open("file-list.txt", "r")
    if f.mode == 'r':
        flist = f.readlines()
        for element in flist:
            cleanlist.append(element.rstrip())
        for x in cleanlist:
            shutil.copy(f"folder_1/{x}",f"folder_2/{x}")    
            
if __name__ == "__main__":
    main()

标签: pythonpython-3.xfile-handling

解决方案


推荐阅读