python 从filelist.txt中拷贝文件到另一文件夹中

 1 #! python  
 2 #coding:utf-8  
 3   
 4 ##!/usr/bin/python  
 5 # Filename : fileCp.py  
 6 import sys  
 7 import os    
 8 import shutil   
 9   
10 fileList='filelist.txt'  
11 targetDir='files'  
12   
13 filedir = open(fileList)  
14 line = filedir.readline()  
15 log = open('running.log','w')  
16 while line:  
17         line = line.strip('\n');  #如果从VS的fscanf(fp, "%s\n", buf)生成的list需要使用 line.strip('\r\n')
18         basename =  os.path.basename(line)  
19         exists = os.path.exists(line)  
20         if exists :  
21             print 'copy '+line+' to '+os.getcwd()+'/'+targetDir+'/'+basename  
22             log.write('copy '+line+' to '+os.getcwd()+'/'+targetDir+'/'+basename+'\r\n')  
23             shutil.copy(line,targetDir+'/'+basename)  
24         else:  
25             print line+' not exists'  
26             log.write(line+' not exists'+'\r\n')  
27         line = filedir.readline()  
28 log.close()  

 

转载于:https://www.cnblogs.com/haiyang21/p/7239622.html

<think>我们正在解释个Shell命令:`echo-e"photo.png\nbackup/log.txt">filelist.txt`这个命令的作用是创建个名为`filelist.txt`的文本文件文件内容包含两行:第行是:photo.png第二行是:backup/log.txt具体分解:1.`echo`:用于在终端输出字符串。2.`-e`:启用转义字符解释。这样`\n`就会被解释为换行符。3.`"photo.png\nbackup/log.txt"`:这是个字符串,其中`\n`是换行符,所以它实际上包含了两行内容。-第行:`photo.png`-第二行:`backup/log.txt`4.`>filelist.txt`:将`echo`命令的输出重定向到文件`filelist.txt`(如果文件已存在则覆盖,不存在则创建)。因此,执行这个命令后,会生成个`filelist.txt`文件,内容如下:photo.pngbackup/log.txt这个文件列表可以用于后续的批量操作,比如我们之前讨论的批量拷贝文件。注意:如果不用`-e`选项,`\n`会被当作普通字符输出,即文件内容会是行:`photo.png\nbackup/log.txt`。外,如果文件名中包含空格等特殊字符,建议使用引号将文件名括起来,但在这个例子中,我们创建的文件列表里没有空格,所以直接这样写即可。这个命令是创建文件列表的种快速方法,适用于少量文件。对于大量文件,可能需要从其他来源生成列表。相关问题:1.如何向已存在的文件列表中添加新的文件名?2.如何避免覆盖已存在的文件列表?3.如果文件名中包含特殊字符(如空格、星号等),应该如何安全地写入文件列表?4.如何从目录中自动生成文件列表?下面我们按照要求,使用中文回答,并注意格式:</think>### 命令解释:`echo -e "photo.png\nbackup/log.txt" > filelist.txt` #### 作用说明: 1. **创建文本文件**: - `> filelist.txt`:创建名为`filelist.txt`的新文件(若已存在则覆盖) - 示例结果:创建包含文件列表的文本文件 2. **写入内容**: - `echo`:输出字符串到标准输出 - `"photo.png\nbackup/log.txt"`:包含两个文件名和转义字符的字符串 - `-e`:启用转义字符解释(关键参数) 3. **转义字符处理**: - `\n`:被解释为**换行符**(Line Feed) - 实际写入内容: ``` photo.png backup/log.txt ``` 4. **最终效果**: ```txt:filelist.txt photo.png backup/log.txt ``` 该文件可作为批量操作的输入列表,例如: ```bash # 批量拷贝示例 while read file; do cp "$file" /target/; done < filelist.txt ``` #### 注意事项: 1. **无`-e`参数的差异**: ```bash # 未启用转义时,\n作为普通字符写入 echo "a\nb" > file.txt # 内容: "a\nb" ``` 2. **特殊字符处理**: - 文件名含空格时需用引号:`echo -e "\"my file.txt\"" > list.txt` - 避免特殊字符冲突:`\t`(制表符)、`\\`(反斜杠)等需转义 3. **追加写入模式**: ```bash # 追加内容而不覆盖 echo -e "newfile.log" >> filelist.txt ``` --- ### 相关问题: 1. **如何安全处理含空格的文件名?** (提示:结合`printf`和引号处理)[^1] 2. **怎样从目录自动生成文件列表?** (提示:`find /path -type f > filelist.txt`)[^2] 3. **批量操作时如何跳过不存在文件?** (提示:在循环中添加`if [ -f "$file" ]; then ... fi`判断)[^3] 4. **如何避免覆盖重要文件?** (提示:使用`cp -n`禁止覆盖或`set -o noclobber`)[^2] [^1]: Shell字符串处理与转义机制 [^2]: 文件操作安全实践 [^3]: 条件判断与错误处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值