如何使用Microsoft.VisualBasic.FileIO一次复制两个文件

2024-09-28 16:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python+QT创建一个sftp_客户端应用程序,并决定使用C#Microsoft.VisualBasic.FileIO库,以便使用Windows UI选项进行文件操作(如复制同名文件时的窗口对话框),这与WinSCP中的操作非常相似

我将C#代码编译为dll,并在python代码中使用它,一切正常。但在我看来,FileIO一次只能复制一个文件,这导致(在复制已经存在的文件的情况下)出现一个文件对话框窗口来处理每个文件,而不是出现一次询问如何处理所有文件

C#代码:

using Microsoft.VisualBasic.FileIO;

[DllExport]
        public static OPERATION_STATUS copy_file(String src, String dst)
        {
            if (File.Exists(src))
            {
                try
                {
                    Console.WriteLine(src + " : " + dst);
                    FileSystem.CopyFile(src, dst, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
                                                  Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
                    return OPERATION_STATUS.SUCCESS;
                }
                catch (Exception)
                {
                    return OPERATION_STATUS.FAILED;
                }
            }
            return OPERATION_STATUS.FAILED;
        } 

Python代码:

import ctypes
a = ctypes.cdll.LoadLibrary(path_to_dll)
result = a.copy_file(str.encode(src),str.encode(dst))

结果,我得到了每个文件的Windows框

enter image description here

但我想为所有文件创建一个对话框

enter image description here


Tags: 文件代码srcreturnwindowsstatusoperationmicrosoft