【问题标题】:How to read file contents of files in a directory and create copies into a new directory?如何读取目录中文件的文件内容并将副本创建到新目录中?
【发布时间】:2021-02-28 06:15:01
【问题描述】:

我必须按照这些说明完成这个功能,我尝试过使用 for 循环和 os.path 方法进行循环,但仍然无法弄清楚?我该如何改进?

def copy_files():
  • 打开datafiles 文件夹中的每个.txt 文件。
  • datafiles 包含 10 个 .txt 文件,其数字用“,”分隔。 datafiles 中的每个文件都被命名为 file00file01file0(+=1)...
  • 读入文本,然后将其写回mydatafiles 子文件夹中myfiles 文件夹中的同名文件。
  • 您必须通过将每个文件中的文本作为字符串读取,然后将其写回到新文件中来实现。
  • 此函数不需要错误处理,也没有返回值。
  • 完成后,mydatafiles 文件夹将包含datafiles 文件夹中每个文件的副本。
from shutil import copyfile

def copy_files():
    src_files = os.listdir('datafiles')
    for file_name in src_files:
        full_file_name = os.path.join('datafiles', file_name)
        if os.path.isfile(full_file_name):
            copyfile(full_file_name, 'mydatafiles')

替代方法:

from shutil import copyfile

def copy_files():
    completeName = os.path.join('myfiles', "mydatafiles")
    new_file = " "
    for file in 'datafiles':
        new_file += file
    incompleteName = os.path.join('datafiles', new_file)
    with open(incompleteName,'r') as firstfile, open('completeName','a') as secondfile: 
        for line in firstfile:    
             # write content to second file 
             secondfile.write(line)

感谢您的帮助

【问题讨论】:

    标签: python function file


    【解决方案1】:

    对于shutil.copyfile(src, dst) 目的地必须完成文件名而不是目录,使用copy() 将目录用作目的地

    def copy_files():
        src_files = os.listdir('datafiles')
        for file_name in src_files:
            full_file_name = os.path.join('datafiles', file_name)
            if os.path.isfile(full_file_name):
                targetFile = os.path.join('mydatafiles', file_name)
                copyfile(full_file_name, targetFile)
                # or
                # copy(full_file_name, 'mydatafiles')
    

    【讨论】:

      猜你喜欢
      • 2013-01-17
      • 1970-01-01
      • 2018-12-30
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多