copyfile(python shutil模块函数copyfile和copy的区别)
无论是copyfile还是python shutil模块函数copyfile和copy的区别,它们都是当前热门话题。如果你对它们感到好奇,那么请跟随小编的脚步,一起来揭开它们的秘密吧!
CopyFile是什么
它是用来复制文件的,函数原型是
BOOL CopyFile(
LPCTSTR lpExistingFileName,// name of an existing file
LPCTSTR lpNewFileName,// name of new file
BOOL bFailIfExists// operation if file exists
);
第一个参数是用来存放当前要处理文件的路径。
第二个参数是用来存放用户指定的新路径。
第三个参数它是用来判断用户指定的新路径是否已经存在要存放的路径,如果为TRUE,则新路径中已经存在该文件了,该函数调用失败,否则就调用成功。
python shutil模块函数copyfile和copy的区别
shutil.copyfile( src, dst)从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException.如果当前的dst已存在的话就会被覆盖掉
shutil.move( src, dst)移动文件或重命名
shutil.copymode( src, dst)只是会复制其权限其他的东西是不会被复制的
shutil.copystat( src, dst)复制权限、最后访问时间、最后修改时间
shutil.copy( src, dst)复制一个文件到一个文件或一个目录
shutil.copy2( src, dst)在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp–p的东西
shutil.copy2( src, dst)如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
shutil.copytree( olddir, newdir, True/Flase)
把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
shutil.rmtree( src)递归删除一个目录以及目录内的所有内容
fso.copyfile复制文件失败
‘这问题只能使用递归解决,以前用过DIR、API方法获取所有文件,现借用楼上的代码给你修改成递归调用,可获取当前目录下及子目录下的指定文件,并稍作注释。速度可能比api的递归慢点,但代码简洁,DIR递归不够稳定而且代码也较长,自己测试一下。
Option Explicit
Dim fso As Object
Private Sub Command1_Click()
Dim path As String, p
path="d:\abc"
path= IIf(Right(path, 1)="\", Left(path, Len(path)- 1), path)'目录格式统一
If fso.FolderExists(path)= True Then getsubfolderfils(path)
End Sub
Private Sub Form_Load()
Set fso= CreateObject("Scripting.FileSystemObject")
End Sub
Function getsubfolderfils(path As String)
Dim p, f, s As String
' On Error Resume Next'自己处理,有些打开的文件是无法复制的
For Each f In fso.GetFolder(path).Files'获取当前目录文件
s= path&"\"& f.Name
If LCase(Right(s, 5))=".docx" Or LCase(Right(s, 4))=".doc" Then f.Copy"c:\"
Next
For Each p In fso.GetFolder(path).subfolders'浏览子目录进行递归调用
getsubfolderfils path&"\"& p.Name
Next
End Function
如何调用API中的copyfile函数复制文件
要站在高一点看问题:
1,函数:
通常用:变量=函数名(参数列表)
这样,执行了这个命令,就返回一个值给变量
所以,这样你就记住函数的使用(调用)格式;
2,参数列表,是调用函数的时候,要告诉函数的自变量。
Declare Function CopyFile Lib"kernel32" Alias"CopyFileA"(ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
这个函数有三个参数:
ByVal lpExistingFileName As String
ByVal--该参数以传值方式进行调用
lpExistingFileName--参数的名称,代表源文件标识符
String--参数的数据类型为字符串类型
ByVal lpNewFileName As String
lpNewFileName--参数的名称,代表目标文件标识符
ByVal bFailIfExists As Long
bFailIfExists--参数的名称,设置当目标存在同名文件时是否继续复制;
当非0(True),那么一旦目标文件存在,则调用复制失败、
当为0(False),那么一旦目标文件存在,则复制成功并覆盖
最后,这个函数返回的是一个长整型,当返回0表示复制失败,非0表示成功;
在VB里使用:
代码如下:
Option Explicit
Private Declare Function CopyFile Lib"kernel32" Alias"CopyFileA"(ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Private Sub Command1_Click()
Dim a As Long
a= CopyFile("c:\1.bmp","d:\1.bmp", 1)
If a= 0 Then
MsgBox"失败"
Else
MsgBox"成功"
End If
End Sub
文章到此结束,希望我们对于copyfile的问题能够给您带来一些启发和解决方案。如果您需要更多信息或者有其他问题,请随时联系我们。