📌  相关文章
📜  如何使用Python从用户保存带有文件名的文件?

📅  最后修改于: 2022-05-13 01:55:44.626000             🧑  作者: Mango

如何使用Python从用户保存带有文件名的文件?

先决条件:

  • Python中的文件处理
  • 在Python中读取和写入文本文件

使用Python文件处理概念可以实现使用用户自定义名称保存文件。 Python提供了用于处理文件的内置函数。通过创建新文件、重命名现有文件、制作文件副本(另存为),可以使用用户首选名称保存文件。让我们详细讨论这些。

创建一个新文件

方法一:使用open()函数

我们可以使用 open()函数和下面列出的访问模式之一创建一个新文件。

方法

  • 从用户获取文件名
  • 打开具有上述访问模式的文件
  • 使用输入的名称创建此文件

例子:

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

句法:

方法

  • 导入模块
  • 从用户获取文件名
  • 使用输入的名称创建文件

例子:

蟒蛇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() 方法以用户指定的名称保存文件

句法:

方法:

  • 导入模块
  • 获取源文件名
  • 获取目标文件名
  • 将源文件重命名为目标文件或目录
  • 如果目标文件已存在,则操作将失败并显示 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)

输出:

方法二:使用pathlib库

pathlib 还提供了 rename()函数来更改文件的名称,这或多或少与上面给出的目的相同。

句法:

方法:

  • 导入模块
  • 获取源文件名
  • 获取目标文件名
  • 将源文件或目录重命名为指定的目标
  • 返回 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)

输出:

复制或复制文件

方法一:使用os模块

我们可以使用 popen() 方法将源文件复制到用户指定名称的目标文件中。

句法:

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}")

输出:

方法二:使用shutil模块

Shutil 模块提供了几个对文件和文件集合的高级操作。它的 copyfile() 方法用于使用用户首选名称重命名文件。

句法:

方法:

  • 导入模块
  • 获取源文件名
  • 获取目标文件名
  • 将源文件复制到新的目标文件。如果两个文件名指定相同的文件,则引发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)

输出: