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.TextIOWrapper
In [5]: import os #打开文件前可以判断文件在不在
In [6]: if os.path.isfile("/tmp/test"):
...: print("exist")
...: else:
...: print("not exist")
...:
not exist
In [7]: print(f)
<_io.TextIOWrapper name='/etc/passwd' mode='r' encoding='UTF-8'>
In [8]: c=f.read() #读取文件使用read
In [9]: print(c)
In [15]: f = open("/etc/passwd","r")
In [16]: print(f.readline()) #readline逐行读取,变成一个列表
root:x:0:0:root:/root:/bin/bash
In [17]: print(f.readline())
bin:x:1:1:bin:/bin:/sbin/nologin
Python的read函数有多种读取模式,具体取决于文件的需要读取方式。以下是几种常见的读取模式:
在Python中,open()
函数返回一个文件对象,可以使用以下方法来对文件进行操作:
read(size=-1)
: 以字符串的形式读取文件的内容。可选参数size
表示要读取的字节数,默认为-1,表示读取整个文件。readline(size=-1)
: 读取一行文件内容,并以字符串形式返回。可选参数size
表示要读取的字节数,默认为-1,表示读取整行。readlines(hint=-1)
: 读取所有行的内容,并返回一个列表,每个元素是文件的一行。可选参数hint
表示要读取的字节数的提示 ,默认为-1,表示读取所有行。write(str)
: 将字符串str
写入文件。返回写入的字符数。writelines(sequence)
: 将字符串序列sequence
写入文件。seek(offset[, whence])
: 将文件指针移动到指定位置。参数offset
表示偏移量,参数whence
表示起始位置,默认为0,表示从文件开头开始计算偏移量。tell()
: 返回当前文件指针位置的字节数。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]: 10
In [26]: f.write("one more row") #再写入
Out[26]: 12
In [27]:
In [27]: f.write(".\n") #写入换行
Out[27]: 2
In [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]: 3
In [14]: f.close()
In [15]: cat /tmp/test
test file
one more row.
abcabcabc
In [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]: 4
In [20]: f.seek(0) #重置到0的位置,没有这句后面语句位置是最后,后面读取为空
Out[20]: 0
In [21]: print(f.read())
test file
one more row.
abcabcabc123
import os
current_dir = os.getcwd()
print("Current working directory:", current_dir)
import os
os.mkdir("new_directory")
import os
os.makedirs("parent_directory/child_directory/grandchild_directory")
import os
files_and_directories = os.listdir("directory_path")
for item in files_and_directories:
print(item)
import os
os.rmdir("directory_path")
import os
# 获取文件或目录的权限
file_permissions = os.stat("file_path").st_mode
# 转换权限信息为八进制形式
octal_permissions = oct(file_permissions & 0o777)
print("File permissions in octal:", octal_permissions)
import os
# 设置文件或目录的权限为读写执行权限
os.chmod("file_path", 0o777)
import os
# 获取文件或目录的属主
file_owner = os.stat("file_path").st_uid
print("File owner:", file_owner)
import os
# 设置文件或目录的属主
os.chown("file_path", new_owner, group_owner)
In [29]: import os
In [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']