如何使用Python从用户保存带有文件名的文件?
先决条件:
- Python中的文件处理
- 在Python中读取和写入文本文件
使用Python文件处理概念可以实现使用用户自定义名称保存文件。 Python提供了用于处理文件的内置函数。通过创建新文件、重命名现有文件、制作文件副本(另存为),可以使用用户首选名称保存文件。让我们详细讨论这些。
创建一个新文件
方法一:使用open()函数
我们可以使用 open()函数和下面列出的访问模式之一创建一个新文件。
Syntax:
open( filepath , mode )
Access modes:
- Write Only (‘w’): Creates a new file for writing, if the file doesn’t exist otherwise truncates and over-write existing file.
- Write and Read (‘w+’): Creates a new file for reading & writing, if the file doesn’t exist otherwise truncates and over-write existing file.
- Append Only (‘a’): Creates a new file for writing, if the file doesn’t exist otherwise data being written will be inserted at the end of the file.
- Append and Read (‘a+’): Creates a new file for reading & writing, if the file doesn’t exist otherwise data being written will be inserted at the end of the file.
方法
- 从用户获取文件名
- 打开具有上述访问模式的文件
- 使用输入的名称创建此文件
例子:
Python3
# path of this script
directory = "D:\gfg\\"
# get fileName from user
filepath = directory + input("Enter filename: ")
# Creates a new file
with open(filepath, 'w+') as fp:
pass
Python3
# import pathlib module
import pathlib
# path of this script
directory = "D:\gfg\\"
# get fileName from user
filepath = directory + input("Enter filename:")
# To create a file
pathlib.Path(filepath).touch()
Python3
# import os library
import os
# get source file name
src = input("Enter src filename:")
# get destination file name
dest = input("Enter dest filename:")
# rename source file name with destination file name
os.rename(src, dest)
Python3
# import pathlib module
import pathlib
# get source file name
src = input("Enter src filename:")
# get destination file name
target = input("Enter target filename:")
# rename source file name with target file name
pathlib.Path(src).rename(target)
Python
# import os module
import os
# get source file name
src = input("Enter src filename:")
# get destination file name
destination = input("Enter target filename:")
# copies source to destination file
os.popen(f"copy {src} {destination}")
Python3
# import shutil module
import shutil
# get source file name
src = input("Enter src filename:")
# get destination file name
dest = input("Enter target filename:")
# copies source file to a new destination file
shutil.copyfile(src, dest)
输出:
Enter filename: newgfgfile.txt
方法二:使用pathlib库
pathlib 提供了一组类来处理文件系统路径。我们可以使用 touch() 方法在给定路径创建文件,它使用当前时间更新文件修改时间并将exist_ok标记为True,否则引发FileExistsError 。
句法:
Path.touch(mode=0o666, exist_ok=True)
方法
- 导入模块
- 从用户获取文件名
- 使用输入的名称创建文件
例子:
蟒蛇3
# import pathlib module
import pathlib
# path of this script
directory = "D:\gfg\\"
# get fileName from user
filepath = directory + input("Enter filename:")
# To create a file
pathlib.Path(filepath).touch()
输出:
Enter filename:gfgfile2.txt
重命名文件
方法一:使用os模块
Python 的 OS 模块包括与操作系统通信的函数。在这里,我们可以使用 rename() 方法以用户指定的名称保存文件。
句法:
rename(src, dest, *, src_dir_fd=None, dst_dir_fd=None)
方法:
- 导入模块
- 获取源文件名
- 获取目标文件名
- 将源文件重命名为目标文件或目录
- 如果目标文件已存在,则操作将失败并显示 OSError。
例子:
蟒蛇3
# import os library
import os
# get source file name
src = input("Enter src filename:")
# get destination file name
dest = input("Enter dest filename:")
# rename source file name with destination file name
os.rename(src, dest)
输出:
Enter src filename:D:\gfg\newgfgfile.txt
Enter dest filename:D:\gfg\renamedfile1.txt
方法二:使用pathlib库
pathlib 还提供了 rename()函数来更改文件的名称,这或多或少与上面给出的目的相同。
句法:
Path(filepath).rename(target)
方法:
- 导入模块
- 获取源文件名
- 获取目标文件名
- 将源文件或目录重命名为指定的目标
- 返回 Path 到目的地的新实例。 (在 Unix 上,如果目标存在并且用户有权限,它将被替换。)
例子:
蟒蛇3
# import pathlib module
import pathlib
# get source file name
src = input("Enter src filename:")
# get destination file name
target = input("Enter target filename:")
# rename source file name with target file name
pathlib.Path(src).rename(target)
输出:
Enter src filename:D:\gfg\gfgfile2.txt
Enter target filename:D:\gfg\renamedfile2.txt
复制或复制文件
方法一:使用os模块
我们可以使用 popen() 方法将源文件复制到用户指定名称的目标文件中。
句法:
popen( command, mode , buffersize )
os.popen() get 命令作为第一个参数执行,访问模式作为第二个参数,可以读取 ('r') 或写入 ('w'),最后是缓冲区大小。默认模式为读取,0 表示无缓冲,缓冲区大小为正整数。
方法:
- 导入模块
- 获取源文件名
- 获取目标文件名
- 将源复制到目标
例子:
Python
# import os module
import os
# get source file name
src = input("Enter src filename:")
# get destination file name
destination = input("Enter target filename:")
# copies source to destination file
os.popen(f"copy {src} {destination}")
输出:
Enter src filename:D:\gfg\renamedfile1.txt
Enter target filename:D:\gfg\copied-renamedfile1.txt
方法二:使用shutil模块
Shutil 模块提供了几个对文件和文件集合的高级操作。它的 copyfile() 方法用于使用用户首选名称重命名文件。
句法:
shutil.copyfile(src_file, dest_file, *, follow_symlinks=True)
方法:
- 导入模块
- 获取源文件名
- 获取目标文件名
- 将源文件复制到新的目标文件。如果两个文件名指定相同的文件,则引发SameFileError并且如果目标文件已经存在,它将被替换。
例子:
蟒蛇3
# import shutil module
import shutil
# get source file name
src = input("Enter src filename:")
# get destination file name
dest = input("Enter target filename:")
# copies source file to a new destination file
shutil.copyfile(src, dest)
输出:
Enter src filename:D:\gfg\renamedfile2.txt
Enter target filename:D:\gfg\copied-renamedfile2.txt