python - 文件

In [1]: f = open("/etc/passwd","r")  #使用open函数打开文件In [2]: f
Out[2]: <_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'>In [3]: type(f)
Out[3]: _io.TextIOWrapperIn [5]: import os  #打开文件前可以判断文件在不在In [6]: if os.path.isfile("/tmp/test"):...:     print("exist")...: else:...:     print("not exist")...:
not existIn [7]: print(f)
<_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'>In [8]: c=f.read()  #读取文件使用readIn [9]: print(c)   In [15]: f = open("/etc/passwd","r")In [16]: print(f.readline())   #readline逐行读取,变成一个列表
root:x:0:0:root:/root:/bin/bashIn [17]: print(f.readline())
bin:x:1:1:bin:/bin:/sbin/nologin

Python的read函数有多种读取模式,具体取决于文件的需要读取方式。以下是几种常见的读取模式:

  1. “r”:只读模式。以文本格式读取文件内容,默认模式。
  2. “rb”:以二进制格式只读模式读取文件内容。
  3. “r+”:读写模式。可以同时读取和写入文件。
  4. “w”:写入模式。以文本格式写入文件内容,如果文件不存在则创建新文件,如果文件已存在则清空原有内容。
  5. “wb”:以二进制格式写入文件内容。
  6. “w+”:读写模式。可以同时读取和写入文件,如果文件不存在则创建新文件,如果文件已存在则清空原有内容。
  7. “a”:追加模式。以文本格式追加写入文件内容,如果文件不存在则创建新文件。
  8. “ab”:以二进制格式追加写入文件内容。
  9. “a+”:读写模式。可以同时读取和追加写入文件内容,如果文件不存在则创建新文件。

在Python中,open()函数返回一个文件对象,可以使用以下方法来对文件进行操作:

  1. read(size=-1): 以字符串的形式读取文件的内容。可选参数size表示要读取的字节数,默认为-1,表示读取整个文件。
  2. readline(size=-1): 读取一行文件内容,并以字符串形式返回。可选参数size表示要读取的字节数,默认为-1,表示读取整行。
  3. readlines(hint=-1): 读取所有行的内容,并返回一个列表,每个元素是文件的一行。可选参数hint表示要读取的字节数的提示 ,默认为-1,表示读取所有行。
  4. write(str): 将字符串str写入文件。返回写入的字符数。
  5. writelines(sequence): 将字符串序列sequence写入文件。
  6. seek(offset[, whence]): 将文件指针移动到指定位置。参数offset表示偏移量,参数whence表示起始位置,默认为0,表示从文件开头开始计算偏移量。
  7. tell(): 返回当前文件指针位置的字节数。
  8. close(): 关闭文件。

这些是文件对象的一些常用方法,可以根据需要选择合适的方法来读取或写入文件。

In [18]: f = open("/etc/passwd","r")  #读取模式In [19]: print(f.readlines())In [24]: f = open("/tmp/test", "w")In [25]: f.write("test file\n")  #写入文字
Out[25]: 10In [26]: f.write("one more row") #再写入
Out[26]: 12In [27]:In [27]: f.write(".\n")  #写入换行
Out[27]: 2In [28]: f.close()  #需要关闭In [29]: cat /tmp/test  #确认情况
test file
one more row.[root@learning ~]# cat mv.py   #文件a内容写进文件b
def move_content(file_a, file_b):try:with open(file_a, 'r') as f1:data = f1.read()with open(file_b, 'w') as f2:f2.write(data)print("Content moved from", file_a, "to", file_b)except FileNotFoundError:print("File not found")# Example usage
file_a = '/root/try.py'  # Replace with the source file nam
file_b = '/root/destination.py'  # Replace with the destination file name
move_content(file_a, file_b)
[root@learning ~]# python3.11 mv.py
Content moved from /root/try.py to /root/destination.py
[root@learning ~]# cat ./destination.py
try:x = 10 / 0
except ZeroDivisionError:print("Division by zero is not allowed")

在Python中,seek()是一个文件对象的方法,用于更改当前文件指针的位置。文件指针表示从文件开头到当前位置的字节数。seek()方法带有一个必需的参数,指定要移动的字节数以及一个可选的偏移位置。它的语法为:

file_object.seek(offset, whence)
  • offset:要移动的字节数
  • whence:可选的参数,默认为0,指定从文件开头(0),当前位置(1)或文件末尾(2)进行查找

通过使用seek()方法,您可以在文件中自由地移动文件指针,并可以执行读取或写入操作定位到不同的位置。

In [11]: f = open("/tmp/test", "a")In [12]: cat /tmp/test
test file
one more row.
abcabc
In [13]: f.write('abc')  #写入
Out[13]: 3In [14]: f.close()In [15]: cat /tmp/test
test file
one more row.
abcabcabcIn [16]: f = open("/tmp/test", "a")In [17]: f.close()In [18]: f = open("/tmp/test", "a+")In [19]: f.write("123\n")  #写入
Out[19]: 4In [20]: f.seek(0)  #重置到0的位置,没有这句后面语句位置是最后,后面读取为空
Out[20]: 0In [21]: print(f.read())
test file
one more row.
abcabcabc123
  1. 获取当前工作目录:
import oscurrent_dir = os.getcwd()
print("Current working directory:", current_dir)
  1. 创建目录:
import osos.mkdir("new_directory")
  1. 创建多级目录:
import osos.makedirs("parent_directory/child_directory/grandchild_directory")
  1. 列出目录下的所有文件和子目录:
import osfiles_and_directories = os.listdir("directory_path")
for item in files_and_directories:print(item)
  1. 删除目录:
import osos.rmdir("directory_path")
  1. 获取文件或目录的权限信息:
import os# 获取文件或目录的权限
file_permissions = os.stat("file_path").st_mode# 转换权限信息为八进制形式
octal_permissions = oct(file_permissions & 0o777)
print("File permissions in octal:", octal_permissions)
  1. 设置文件或目录的权限:
import os# 设置文件或目录的权限为读写执行权限
os.chmod("file_path", 0o777)
  1. 获取文件或目录的属主信息:
import os# 获取文件或目录的属主
file_owner = os.stat("file_path").st_uid
print("File owner:", file_owner)
  1. 设置文件或目录的属主:
import os# 设置文件或目录的属主
os.chown("file_path", new_owner, group_owner)
In [29]: import osIn [30]: os.mkdir("/tmp/nihao")In [31]: os.chdir("/tmp")In [32]: os.getcwd()
Out[32]: '/tmp'In [33]: os.chdir("/")In [34]: os.getcwd()
Out[34]: '/'In [35]: os.rmdir("/tmp/nihao")In [37]: os.chdir("/root")In [38]: os.chmod("try.py",777)In [39]: os.chown("try.py",0,1000)In [40]: os.listdir(".")
Out[40]:
['test3.py','.pip']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[ai笔记9] openAI Sora技术文档引用文献汇总

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第9篇分享&#xff01; 这篇笔记承接上一篇技术文档的学习&#xff0c;主要是为了做一个记录&#xff0c;记录下openai sora技术介绍文档提到的一些论文&#xff0c;再此特地记录一下&#xff01; 1 原文…

Sora 文生视频提示词实例集 2

Prompt: Historical footage of California during the gold rush. 加利福尼亚淘金热期间的历史影像。 Prompt: A close up view of a glass sphere that has a zen garden within it. There is a small dwarf in the sphere who is raking the zen garden and creating patter…

MySQL篇之SQL优化

一、表的设计优化 表的设计优化&#xff08;参考阿里开发手册《嵩山版》&#xff09;&#xff1a; 1. 比如设置合适的数值&#xff08;tinyint int bigint&#xff09;&#xff0c;要根据实际情况选择。 2. 比如设置合适的字符串类型&#xff08;char和varchar&#xff09…

pytorch 实现线性回归(深度学习)

一 查看原始函数 初始化 %matplotlib inline import random import torch from d2l import torch as d2l 1.1 生成原始数据 def synthetic_data(w, b, num_examples):x torch.normal(0, 1, (num_examples, len(w)))y torch.matmul(x, w) bprint(x:, x)print(y:, y)y tor…

springboot第55集:思维导图Sharding-JDBC,事务,微服务分布式架构周刊

事务相关知识&#xff0c;你知道多少&#xff1f; 事务定义 在数据库管理系统中&#xff0c;事务是单个逻辑或工作单元&#xff0c;有时由多个操作组成&#xff0c;在数据库中以一致模式完成的逻辑处理称为事务。一个例子是从一个银行账户转账到另一个账户&#xff1a;完整的交…

【ChatGPT】的定价模式:免费还是收费?

ChatGPT的定价模式&#xff1a;免费还是收费&#xff1f; 人工智能技术的快速发展正在为我们的生活带来巨大的变化&#xff0c;而OpenAI最近推出的ChatGPT模型引发了人们对它的定价模式的关注。这篇文章将探讨ChatGPT是免费还是收费的问题&#xff0c;并对这个话题进行深入分析…

阿里云ECS香港服务器性能强大、cn2高速网络租用价格表

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品&#xff0c;中国电信CN2高速网络高质量、大规格BGP带宽&#xff0c;运营商精品公网直连中国内地&#xff0c;时延更低&#xff0c;优化海外回中国内地流量的公网线路&#xff0c;可以提高国际业务访问质量。阿里云服务…

免费chatgpt使用

基本功能如下&#xff1a; https://go.aigcplus.cc/auth/register?inviteCode3HCULH2UD

[嵌入式系统-25]:RT-Thread -12- 内核组件编程接口 - 网络组件 - HTTP编程

目录 一、HTTP编程概述 1.1 概述 1.2 HTTP 服务器和 HTTP 客户端 二、HTTP Client 2.1 如何配置HTTP Client 2.2 HTTP Client代码实例1&#xff1a;socket发送http报文 2.3 HTTP Client代码实例2&#xff1a;httpc_xx接口收发HTTP报文 2.3.1 接口函数描述 2.3.2 代码实…

中科大计网学习记录笔记(十二):TCP 套接字编程

前前言&#xff1a;大家看到这一章节的时候一定不要跳过&#xff0c;虽然标题是编程&#xff0c;但实际上是对 socket 的运行机制做了详细的讨论&#xff0c;对理解 TCP 有很大的帮助&#xff1b;但是由于本节涉及到了大量的编程知识&#xff0c;对于一些朋友来说不是很好理解&…

【深度学习】S3 线性神经网络 P1 线性回归(未完)

目录 线性回归基本元素基本名词线性模型 机器学习领域&#xff0c;大多数任务最终的目标都是预测。而预测的结果大致分为两大类&#xff0c;一种是需要估计连续数值的回归预测&#xff0c;另一种是确定离散类别的分类预测。本节博文将围绕线性回归内容。 线性回归基本元素 基…

Nginx (window)2024版 笔记 下载 安装 配置

前言 Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理&#xff08;Reverse Proxy&#xff09;服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。 反向代理方式是指以代理服务器来接受 internet 上的连接请求&#xff0c;然后将请求转发给内部网络上的服…

[AIGC_coze] Kafka 的主题分区之间的关系

Kafka 的主题分区之间的关系 在 Kafka 中&#xff0c;主题&#xff08;Topics&#xff09;和分区&#xff08;Partitions&#xff09;是两个重要的概念&#xff0c;它们之间存在着密切的关系。 主题是 Kafka 中用于数据发布和订阅的逻辑单元。每个主题可以包含多个分区&#x…

【退役之重学前端】关于在控制台得到undefined的事

在浏览器控制台中&#xff0c;undefined 会时不时地&#xff0c;在我不想看到的地方出现。如果你遇到相同的问题&#xff0c;在这篇博客中你会得到答案。 先来看代码块 function test(){} test()//undefined再看下一个代码块 function test(){return 1; } test()//1再来看一个…

BUGKU-WEB eval

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; <?phpinclude "flag.php";$a $_REQUEST[hello];eval( "var_dump($a);");show_source(__FILE__); ?>解题思路 PHP代码审计咯 相关工具 百度搜索PHP相关知识 解题步骤 分析脚…

OpenAI全新发布文生视频模型:Sora!

OpenAI官网原文链接&#xff1a;https://openai.com/research/video-generation-models-as-world-simulators#fn-20 我们探索视频数据生成模型的大规模训练。具体来说&#xff0c;我们在可变持续时间、分辨率和宽高比的视频和图像上联合训练文本条件扩散模型。我们利用对视频和…

【C++初阶】第三站:类和对象(中) -- 日期计算器

目录 前言 日期类的声明.h 日期类的实现.cpp 获取某年某月的天数 全缺省的构造函数 拷贝构造函数 打印函数 日期 天数 日期 天数 日期 - 天数 日期 - 天数 前置 后置 前置 -- 后置-- 日期类中比较运算符的重载 <运算符重载 运算符重载 ! 运算符重载 …

【Webpack】生产模式

生产模式介绍 生产模式是开发完成代码后&#xff0c;我们需要得到代码将来部署上线。 这个模式下我们主要对代码进行优化&#xff0c;让其运行性能更好。 优化主要从两个角度出发: 优化代码运行性能优化代码打包速度 生产模式准备 我们分别准备两个配置文件来放不同的配置…

用c语言做一个心算小游戏

有加减和乘法3种运算&#xff0c;由于除法涉及到浮点数存储有误差&#xff0c;所以比较难实现&#xff0c;改程序还有判定分数机制&#xff0c;根据难度给定合适的分数&#xff0c;随机抽取运算题目和符号。下面的代码适合Linux和安卓上的编译器&#xff0c;因为用了ANSI转义字…

SG5032EAN规格书

SG5032EAN 晶体振荡器结合了相位锁定环&#xff08;PLL&#xff09;技术和AT切割晶体单元&#xff0c;提供了73.5 MHz至700 MHz的广泛频率范围&#xff0c;以满足高速数字应用的需求。高性能的LV-PECL输出&#xff0c;2.5V和3.3V电源电压&#xff0c;可灵活适配不同设计的电源需…