编写一个函数,完成文件拷贝功能,程序运行时需要输入源文件名和目标文件名
时间: 2024-10-10 19:13:20 浏览: 47
在Python中,你可以编写一个简单的函数来实现文件拷贝的功能,例如使用内置的`shutil`模块中的`copyfile()`函数。这里是一个示例:
```python
import shutil
def copy_file(src_filename, dest_filename):
try:
# 检查源文件是否存在
if not os.path.exists(src_filename):
print(f"源文件 '{src_filename}' 不存在")
return
# 拷贝文件
shutil.copyfile(src_filename, dest_filename)
print(f"文件'{src_filename}'已成功复制到'{dest_filename}'")
except Exception as e:
print(f"复制文件时发生错误:{str(e)}")
# 调用函数,传入源文件路径和目标文件路径
source = input("请输入源文件名:")
destination = input("请输入目标文件名:")
copy_file(source, destination)
```
当你运行这个程序时,它会提示用户输入源文件名和目标文件名。请注意,如果文件路径包含空格或其他特殊字符,记得使用合适的语法将其括起来。
相关问题
用Python编写一个程序完成文件拷贝功能程序运行时需要输入源文件明和目标文件名
在Python中,你可以使用内置的`shutil`模块来实现文件的复制功能。下面是一个简单的示例程序,它会提示用户输入源文件名和目标文件名,然后将源文件复制到指定的目标位置:
```python
import shutil
def copy_file():
# 获取用户输入的源文件路径
source_path = input("请输入源文件的完整路径: ")
# 检查路径是否有效
if not os.path.exists(source_path):
print("源文件不存在,请检查路径并重新输入.")
return
# 获取目标文件名
target_name = input("请输入目标文件名 (包括完整路径): ")
# 如果目标是一个目录,我们在该目录下创建同名文件
if os.path.isdir(target_name):
target_path = os.path.join(target_name, os.path.basename(source_path))
else:
target_path = target_name
# 尝试复制文件
try:
shutil.copy2(source_path, target_path)
print(f"源文件 '{source_path}' 已成功复制至 '{target_path}'")
except Exception as e:
print(f"复制文件时出错: {e}")
# 调用函数
copy_file()
```
在这个程序中,我们使用了`shutil.copy2()`函数,这是一个更安全、更可靠的文件复制方法,它会保留元数据。
用java写程序:针对给定源文件名及目的文件名(文件名以main函数参数方式给定),实现将源文件拷贝至目的文件。若源文件名与目的文件名相同、目的文件已存在、源文件不存在。不执行拷贝,并将信息反馈给用户。(注意,文件不一定是文本型文件,应采用字节流方式处理)
以下是用Java实现的拷贝文件的程序:
```java
import java.io.*;
public class FileCopy {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Usage: java FileCopy <source file> <target file>");
return;
}
String sourceFileName = args[0];
String targetFileName = args[1];
File sourceFile = new File(sourceFileName);
File targetFile = new File(targetFileName);
if (!sourceFile.exists()) {
System.out.println("Source file does not exist.");
return;
}
if (sourceFile.isDirectory()) {
System.out.println("Source file is a directory.");
return;
}
if (targetFile.exists()) {
System.out.println("Target file already exists.");
return;
}
try (InputStream in = new FileInputStream(sourceFile);
OutputStream out = new FileOutputStream(targetFile)) {
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
System.out.println("File copied successfully.");
} catch (IOException e) {
System.out.println("Error copying file: " + e.getMessage());
}
}
}
```
该程序首先检查命令行参数,如果不是两个参数,即源文件名和目的文件名,则打印使用说明并退出。
然后,程序通过源文件名和目的文件名创建File对象。如果源文件不存在或是一个目录,则打印相应的错误信息并退出。如果目的文件已经存在,则打印相应的错误信息并退出。
最后,程序使用字节流方式读取源文件并写入目的文件。如果读取和写入过程中出现了异常,则打印错误信息。否则,打印文件拷贝成功的信息。
阅读全文