本文目录一览:
- 1、Python的shutil模块中文件的复制操作
- 2、R、python的文件夹操作
- 3、python 怎么将输入目录内的文件拷贝至另一个目录的同名文件夹?
- 4、用python如何将文件夹内部分指定文件名的文件复制到目标文件夹,大佬求教!
Python的shutil模块中文件的复制操作
shutil.copyfile(src, dst):将名为src的文件的内容复制到名为dst的文件中 。
src, dst是文件名
shutil.copy(source, destination)
shutil.copy() 函数实现文件复制功能,将 source 文件复制到 destination 文件夹中,两个参数都是字符串格式。如果 destination 是一个文件名称,那么它会被用来当作复制后的文件名称,即等于 复制 + 重命名。
source一定是文件名,destination可以是文件名也可以是文件夹名
举例如下:
shutil 模块
R、python的文件夹操作
Python OS模块
1.重命名:os.rename(old, new)
2.删除:os.remove(file)
3.列出目录下的 文件 :os.listdir(path)
4.获取当前工作目录:os.getcwd()
5.改变工作目录:os.chdir(newdir)
6.创建多级目录:os.makedirs(r"c:/python /test")
7.创建单个目录:os.mkdir("test")
8.删除多个目录:os.removedirs(r"c:/python") #删除所给路径最后一个目录下所有空目录。
9.删除单个目录:os.rmdir("test")
10.获取文件属性:os.stat(file)
11.修改文件权限与时间戳:os.chmod(file)
12.执行操作系统 命令:os.system("dir")
13.启动新进程:os.exec(), os.execvp()
14.在后台执行程序:osspawnv()
15.终止当前进程:os.exit(), os._exit()
16.分离文件名:os.path.split(r"c:/python/ hello.py ") – ("c://python", " hello.py ")
17.分离扩展名:os.path.splitext(r"c:/python/ hello.py ") – ("c://python//hello", ".py")
18.获取路径名:os.path.dirname(r"c:/python/ hello.py ") – "c://python"
19.获取文件名:os.path.basename(r"r:/python/hello.py") – "hello.py"
20.判断文件是否存在:os.path.exists(r"c:/python/hello.py") – True
21.判断是否是绝对路径:os.path.isabs(r"./python/") – False
22.判断是否是目录:os.path.isdir(r"c:/python") – True
23.判断是否是文件:os.path.isfile(r"c:/python/hello.py") – True
24.判断是否是链接文件:os.path.islink(r"c:/python/hello.py") – False
25.获取文件大小:os.path.getsize(filename)
26.*******:os.ismount("c://") – True
27.搜索目录下的所有文件:os.path.walk()
[2.shutil]
1.复制单个文件:shultil.copy(oldfile, newfle)
2.复制整个目录树:shultil.copytree(r"./setup", r"./backup")
3.删除整个目录树:shultil.rmtree(r"./backup")
[3.tempfile]
1.创建一个唯一的临时文件:tempfile.mktemp() – filename
2.打开临时文件:tempfile.TemporaryFile()
[4.StringIO] #cStringIO是StringIO模块的快速实现模块
1.创建内存 文件并写入初始数据 :f = StringIO.StringIO("Hello world!")
2.读入内存文件数据:print f.read() #或print f.getvalue() – Hello world!
3.想内存文件写入数据:f.write("Good day!")
4.关闭内存文件:f.close()
rm(list=ls())
path = 'J:/lab/EX29 --在R语言中进行文件(夹)操作'
setwd(path)
cat("file A\n", file="A") #创建一个文件A,文件内容是'file A','\n'表示换行,这是一个很好的习惯
cat("file B\n", file="B") #创建一个文件B
file.append("A", "B") #将文件B的内容附到A内容的后面,注意没有空行
file.create("A") #创建一个文件A, 注意会覆盖原来的文件
file.append("A", rep("B", 10)) #将文件B的内容复制10便,并先后附到文件A内容后
file.show("A") #新开工作窗口显示文件A的内容
file.copy("A", "C") #复制文件A保存为C文件,同一个文件夹
dir.create("tmp") #创建名为tmp的文件夹
file.copy(c("A", "B"), "tmp") #将文件夹拷贝到tmp文件夹中
list.files("tmp") #查看文件夹tmp中的文件名
unlink("tmp", recursive=F) #如果文件夹tmp为空,删除文件夹tmp
unlink("tmp", recursive=TRUE) #删除文件夹tmp,如果其中有文件一并删除
file.remove("A", "B", "C") #移除三个文件
python 怎么将输入目录内的文件拷贝至另一个目录的同名文件夹?
这是最近写的一个类似代码,你拿去改改
import shutil
import os
import logging
import sys
logger = logging.getLogger(__name__)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
def cp_or_mv2(src_file, des_dir, is_copy):
print(src_file, des_dir)
if os.path.isfile(src_file):
logger.info(f'from file {src_file}')
if is_copy:
shutil.copy2(src_file, des_dir)
logger.info(f'copy to {des_dir}')
else:
des_file = os.path.join(des_dir, src_file)
shutil.move(src_file, des_file)
logger.info(f'move to {des_file}')
else:
logger.info(f'from dir {src_file}')
des_dir_level1 = os.path.join(des_dir, src_file)
shutil.copytree(src_file, des_dir_level1, dirs_exist_ok=True)
logger.info(f'to {des_dir_level1}')
if not is_copy:
shutil.rmtree(src_file)
logger.info(f'deleted {src_file}')
def process_files_in_txt(txt_file, src_dir, des_dir, is_copy=True):
os.chdir(src_dir)
with open(txt_file, 'r', encoding='utf8', errors='ignore') as f:
for line in f.readlines():
src_file = line.strip()
# logger.info(src_file)
if os.path.exists(src_file):
cp_or_mv2(src_file, des_dir, is_copy)
else:
logger.warning(f'{src_file} missing!')
if __name__ == '__main__':
process_files_in_txt(r"D:\D\需要拷贝.txt", # 哪些文件(夹)
r"D:\D\Desktop", # 从哪个文件夹
r"D:\D\新建文件夹", # 到哪个文件夹
is_copy=False) # True复制,False剪切
用python如何将文件夹内部分指定文件名的文件复制到目标文件夹,大佬求教!
import glob
import shutil
def copy_file(names,old_name,new_name):
for name in names:
filename = name.split("\\")[-1]
#filename:从路径中截取文件名
shutil.copyfile(old_name + filename, new_name + filename)
files = glob.glob(r'D:/A/1*.txt')
#files : 搜索得到的符合条件(带有1开头的txt)的文件列表
old_path = r'D:/A/'
new_path = r'D:/B/'
copy_file(files,old_path,new_path)