当前位置: 首页 > 知识库问答 >
问题:

如果目标文件夹中已经存在,如何替换文件?

葛阳
2023-03-14

我只想将一个文件从一个文件夹移动到另一个文件夹(已经知道如何操作),并在这个过程中检查目标文件夹中的所有文件,删除同名文件。

我有两个文件夹/src和/dst。

在/src文件夹中,我有:

在文件夹/dst中:

  • “进入。日志1.20171110_115840565311.txt'

当我将/src中的文件移动到/dst时,我想删除/src中名为文件的所有文件,不包括/dst文件中的datetime()扩展名。

所以 /dst文件夹在执行后应该是这样的:

  • “进入。日志1.txt'
  • “进入。日志2.20171110_115940565311.txt'

这是我必须将文件从/src移动到/dst的代码:

entrada = ENTRADA   #This 3 are the paths to the folders  /src
salida = SALIDA     #                                     /dst
error=ERROR         #                                     /err
files=glob.glob(entrada)
for file in files:
   fichero=open(file,encoding='utf-8')
   try:
       for line in fichero:
          la=line.replace("-","")
          li=la.replace('”'+chr(10),'')
          li=li.split('"')
          line_DB(li)
       fichero.close()
       if TIME_RENAME=='True':
          execution=str(datetime.now())
          execution=execution.replace('.','')
          execution=execution.replace('-','')
          execution=execution.replace(' ','_')
          execution_time=execution.replace(':','')
          base = os.path.splitext(file)[0]
          base=base+'.'+execution_time+'.txt'
          os.rename(file,base)
          file=base
       else:
          print('Hello')
          #This is where I need the code

       shutil.move(file, salida)
       con.commit()
   except:
       logging.error(sys.exc_info())
       print(sys.exc_info())
       fichero.close()
       shutil.move(file, error)

有人能帮我吗?

谢谢!!

共有2个答案

奚和光
2023-03-14

删除带有匹配正则表达式的所有文件。只需导航到目标文件夹,并在您的案例中使用正则表达式删除所有文件

rm access.log.1.[0-9,_]*.txt

它删除所有的文件名称access.log.1... txt现在,你可以复制文件使用

cp filename.txt /dst/filename.txt
于捷
2023-03-14

桑迪普的答案应该行得通,但是如果你特别想要你在问题中陈述的方式,这可能行得通:

import os

src_filename = "access.log.1.txt"
dst_dir = "test"

for filename in os.listdir(dst_dir):

    # Filter files based on number of . in filename
    if filename.count(".") < 4:
        continue

    # We need to remove the datetime extension before comparing with our filename
    filename_tokens = filename.split(".")  # List of words separated by . in the filename
    print "Tokens:", filename_tokens

    # Keep only indexes 0, 1, 2 and 4 (exclude index 3, which is the datetime-string)
    datetime_string = filename_tokens.pop(3)  # pop() also removes the datetime-string
    print "Datetime:", datetime_string
    dst_filename = ".".join(filename_tokens)
    print "Destination filename:", dst_filename

    # Check if the destination filename now matches our source filename
    if dst_filename == src_filename:
        # Get full path of file to be deleted
        filepath = os.path.join(dst_dir, filename)
        # Delete it
        print "Deleting:", filepath
        os.remove(filepath)
    print "----------------------"

请注意,这种方法假定所有目标文件名都与问题中的文件名相同,即所有文件名都有4个句点(),并且日期时间字符串始终在第三个句点和第四个句点之间。

 类似资料:
  • 问题内容: 我需要将文件写入以下路径: 但是路径可能不存在。所以我得到以下错误: message = ENOENT,打开/folder1/folder2/file.txt 如何将内容写入该路径? 问题答案: 将mkdirp与first 结合使用。 如果整个路径已经存在,则为noop。否则,它将为您创建所有丢失的目录。 该模块可满足您的需求:https : //npmjs.org/package/w

  • 我需要在RTF文件的内容中将“\line”标记替换为“\par”标记,然后解析结果文本。 当我通过fileContent时,一切都很顺利!!。数据直接传输到readTextBlocks.(我的转换似乎破坏了文本编码。请帮助我?

  • 问题内容: 在使用Bluehost进行WordPress安装时,我遇到了一些情况,由于没有上传文件夹,我的WordPress主题遇到了错误。 显然,尽管HostGator可以,Bluehost cPanel WordPress安装程序不会创建此文件夹。 因此,我需要向主题添加代码,以检查文件夹并以其他方式创建该文件夹。 问题答案: 尝试这个: 请注意,这已经是目录的默认模式,并且仍可以被当前的um

  • 问题内容: 我的一个同事写了一堂课。他的班级使用我的班级。他没有告诉JVM每次编译类时我的类都在哪里,而是将这两个类打包到一个jar文件中,我可以像这样运行: 现在,我决定对班级进行更改。因此,由于我的班级已经预编译到他的jar中,所以他的班级(我仍然需要使用)使用我的旧班级。我的同事离开了,我不知道他如何将所有内容打包到一个jar文件中供我使用。 现在,当我尝试使用时,当他的班级调用我的班级时,

  • 我可以使用python执行什么命令来使用python查找文件的文件夹(目录是已知的)? 例如,我有,我只需要部分。

  • 本文向大家介绍Java如何在不存在文件夹的目录下创建文件,包括了Java如何在不存在文件夹的目录下创建文件的使用技巧和注意事项,需要的朋友参考一下 核心代码如下所示: 1、 2、 总结 以上所述是小编给大家介绍的Java如何在不存在文件夹的目录下创建文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!