python文件调用方法(python调用方法里的方法)

发布时间:2022-11-15

本文目录一览:

  1. python中3种调用可执行文件.exe的方法
  2. Python文件操作,看这篇就足够!
  3. python对文件的独操作有哪几种?请详细说明每种方法

python中3种调用可执行文件.exe的方法

方法一、os.system() 会保存可执行程序中的打印值和主函数的返回值,且会将执行过程中要打印的内容打印出来。

import os
main = "project1.exe"
r_v = os.system(main)
print(r_v)

方法二、subprocess.getstatusoutput() 会保存可执行程序中的打印值和主函数的返回值,但不会将执行过程中要打印的内容打印出来。

import subprocess
import os
main = "project1.exe"
if os.path.exists(main):
    rc, out = subprocess.getstatusoutput(main)
    print(rc)
    print('*' * 10)
    print(out)

方法三、popen() 会保存可执行程序中的打印值,但不会保存主函数的返回值,也不会将执行过程中要打印的内容打印出来。

import os
main = "project1.exe"
f = os.popen(main)
data = f.readlines()
f.close()
print(data)

另外,上面提到的三种方式,实际上都是在 Python 中执行命令,因此它们不只是用来执行可执行文件,也可以用来执行 Linux 系统中的其他指令。 关于 Python 中 3 种调用可执行文件 .exe 的方法,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于 Python 编程的学习方法及素材等内容,可以点击本站其他文章学习。

Python文件操作,看这篇就足够!

文件的存储方式

在计算机中,文件是以二进制的方式保存在磁盘上的文本文件和二进制文件。 文本文件可以使用文本编辑软件查看,本质上还是二进制文件。 二进制文件保存的内容不是给人直接阅读的,而是提供给其他软件使用的。二进制文件不能使用文件编辑软件查看。

文件基本操作

在计算机中要操作文件一共包含三个步骤:

  1. 打开文件
  2. 读、写文件
  • :将文件内容读入内存
  • :将内存内容写入文件

模式描述

  • t:文本模式(默认)。
  • x:写模式,新建一个文件,如果该文件已存在则会报错。
  • b:二进制模式。
  • +:打开一个文件进行更新(可读可写)。
  • U:通用换行模式(不推荐)。
  • r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
  • rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
  • r+:打开一个文件用于读写。文件指针将会放在文件的开头。
  • rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
  • w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
  • w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
  • wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
  • a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
  • ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 文件打开模式有很多,但我们实际用到的就只有六种。 我们总结一下主要用到的是下面六种: | 模式 | 可做操作 | 若文件不存在 | 是否覆盖文件原来内容 | |------|----------|--------------|----------------------| | r | 只读 | 报错 | —— | | r+ | 可读、可写 | 报错 | 是 | | w | 只写 | 创建 | 是 | | w+ | 可读、可写 | 创建 | 是 | | a | 只写 | 创建 | 否,追加写 | | a+ | 可读、可写 | 创建 | 否,追加写 |

只读模式打开文件——只读(r)

文件若不存在报错。

读写模式打开文件——读写模式(r+)

数据写入之前: 数据写入之后: 会替换掉相同长度的内容。 文件若不存在报错。

写模式打开文件——写模式(w)

数据写入之前: 数据写入之后: 这种操作会删除原来的文件内容,重新写入 Python,并且把光标放在文件最开始。 若文件不存在,系统会创建该文件夹并重新写入内容。

读写模式打开文件——读写模式(w+)

数据写入之前: 数据写入之后: 这种操作会删除原来的文件内容,重新写入 Python,并且把光标放在文件最开始。 若文件不存在,系统会创建该文件夹并重新写入内容。 利用这个原理,所以文件写模式 (w)、读写模式 (w+) 还可以用作删除文件内容。 因为它们整个工作原理就是把文件原来的内容删除,然后写入新的内容。 如果我们写入的内容为空,那么不就是删除文件内容。

写模式打开文件(追加内容)——写模式(a)

数据写入之前: 数据写入之后: 可以看到是在原先内容的基础上在文末追加新的内容! 若文件不存在,系统会创建新的文件夹并写入内容。

读写模式打开文件(追加内容)——读写模式(a)

数据写入之前: 数据写入之后: 可以看到是在原先内容的基础上在文末追加新的内容! 若文件不存在,系统会创建新的文件夹并写入内容。

二进制模式打开文件

我们看到了在文件打开模式中有以下模式:rbwb……有这种带 b 的。 什么意思呢? 就是用二进制的方式打开文件。 很明显,我们出现了以下错误: 主要原因是因为编码的问题,可能是因为 0x82 这个字节在 gbk 编码中没有这个字符,可能原字符是两个字节,在 gbk 里被解析成了一个字节,导致字符不存在。 这就是我们文件打开方式需要使用二进制读取的原因。

文件操作

open 函数负责打开文件,并且返回文件对象。 read / write / close 三个方法都需要通过文件对象来调用。

文件和文件夹的操作

在 Python 中文件和文件夹的操作要借助 os 模块里面的相关功能,具体步骤如下:

  • 导入 os 模块
  • 使用 os 模块相关功能
  1. 文件重命名
  2. 删除文件
  3. 创建文件夹
  4. 删除文件夹
  5. 获取当前目录
  6. 改变默认目录
  7. 获取目录列表

python对文件的独操作有哪几种?请详细说明每种方法

  1. 打开文件:
f = open(r'E:\PythonProjects\test7\a.txt', mode='rt', encoding='utf-8')

以上三个单引号内分别表示:要打开的文件的路径,mode 为文件打开方式(具体介绍在下文),encoding 为文件的字符编码,一般默认为 utf-8。 2. 读写文件:

data = f.read()  # 读文件
f.write()        # 写文件
  1. 关闭文件:
f.close()
  1. 为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件
with open('a.txt', mode='rt', encoding='utf-8') as f:
    data = f.read()
    print(data)
with open('a.txt', mode='wt', encoding='utf-8') as f:
    f.write('hello world')
  1. 控制文件读写的操作:
  • r(默认模式):只读。以该模式打开文件时,若文件不存在则报错;若文件存在,则文件指针在文件开头,即从文件开头开始读文件。
  • w:只写。以该模式打开文件时,若文件不存在则创建一个文件;如文件存在,则清空文件内容,文件指针移到开头。
  • a:追加写。以该模式打开文件时,若文件不存在则创建一个文件;如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容。
  1. 控制文件读写内容的模式(tb 都不能单独使用,必须与 rwa 结合使用)
  • t(默认):无论读写都是以字符为单位,只能识别文本文件,必须要指定 encoding
  • b:无论读写都是以字节为单位,可以识别所有文件,一定不能指定 encoding
  1. 文件的拷贝
with open('a.txt', mode='rb') as af, \
     open('b.txt', mode='wb') as bf:
    data = af.read()
    bf.write(data)

执行程序后,打开文件,即可发现文件已成功拷贝。这里使用 b 而不是 t 模式,是因为文件有多种格式。 8. 文件的修改 文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名。文件的修改有两种方式,分别适用于不同的情景。 方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中;这样内存里就存在两个文件,故不适用于容量大的文件,具体代码见下方:

with open('a.txt', mode='rt', encoding='utf-8') as f:
    data = f.read()
    data_new = data.replace('yang', 'yv')
with open('b.txt', mode='wt', encoding='utf-8') as p:
    p.write(data_new)

方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名。这种方式在内存中只存在两行文件,节省内存,可用于大文件。

import os
with open('b.txt', mode='rt', encoding='utf-8') as f, \
     open('.b.txt.swap', mode='wt', encoding='utf-8') as p:
    for line in f:
        p.write(line.replace('yv', 'yang'))  # 调用 replace 方法,将源文件中的 'yv' 换成 'yang'
os.remove('b.txt')
os.rename('.b.txt.swap', 'b.txt')
  1. 文件的阶段:truncate(n) 将文件中 n 个字节后的内容全部删除。当 n 不存在时,即删除文件全部内容。
  2. 文件内指针的移动 f.seek():指针的移动是以字节为单位的。 seek 有三种模式:
  • 0(默认模式):指针在文件开头,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 12 模式只能在 b 模式下使用。
  • 1:指针在当前位置。
  • 2:指针在文件末尾。 以下为具体示例:
# 0
with open('a.txt', mode='rt', encoding='utf-8') as f:
    f.seek(3, 0)
    print(f.tell())  # 指针当前位置
    print(f.read())  # 从指针后读出所有内容
# 1 参照指针当前位置
with open('a.txt', mode='rb') as f:
    f.read(2)
    f.seek(4, 1)
    print(f.tell())
    print(f.read().decode('utf-8'))
# 2 参照文件末尾
with open('a.txt', mode='rb') as f:
    f.seek(-5, 2)
    print(f.tell())
    print(f.read().decode('utf-8'))

seek 处于 2 模式时,可以将文件中新加入的内容打印出来,具体代码如下:

# 另一个文件进行写操作,写的代码如下:
with open('a.txt', mode='at', encoding='utf-8') as f:
    f.write('hello world\n')
# 每在文件中写入新的内容,都打印出来,以下代码执行打印操作:
import time
with open('a.txt', mode='rb') as f:
    f.seek(0, 2)
    while True:
        line = f.readline()  # readline 可以读取没有内容的部分
        if len(line) == 0:
            time.sleep(0.1)
        else:
            print(line.decode('utf-8'))