虽然关于 Python 的文章还可以继续,但目前先到这里。 可以是网络或 Linux 预计会有相关文章发布。 虽然只有4篇关于Python的文章,但要仅仅通过这4篇文章来完全理解Python,这显然是不可能的。 由于我发的一篇帖子,即使只包含一个子标题,也能引发很多讨论,所以,我之前的帖子可以理解为一篇总结或入门文章。或者,您可以认为这些帖子提供了一种学习方法。现在,我们开始吧!🙃
一、概述
使用 Python 文件可以调用或生成。 文件读写功能比人们想象的更重要,并且可以用于各种用途。 在读取或写入文件时,都需要使用以下函数: 打开 存在函数。在读取文件时: readline(), readlines() 使用函数。在写入文件时 write(), writelines() 它被广泛使用。作为面向对象编程的核心概念。 课程 这是一种常见的概念。 同样,Python 也是通过将对象定义为类来实现的。 属性鸡蛋 行为 基于此进行编程。类是 成员变量哇 方法它由三个主要部分组成:生成、运行和消亡。 “生命周期”拥有这些功能。作为类的特殊方法 __del__() 函数和 __add__() 该函数存在。该类可以调用其他类 继承虽然这是一种可能性,但在这里,“继承”指的是父类和子类的关系,就像“汽车的轮子属于汽车一样”。

Ⅱ. 读取和写入 Python 文件
有些人可能会疑惑,为什么学习文件读写应该用 Python。 但是,读取和写入文件... 在编程中,良好的思维方式比很多人认为的更重要。 例如,在进行网页项目时,需要导入大量数据并将其存储在数据库中,可以使用 Python 进行自动化。在自动化过程中,读取和写入文件是常用的功能,例如,可以将输入的数据保存为文件,或者读取和使用 Excel、Word、PDF、文本文件等。当然,本文所提到的内容并不意味着可以完全实现上述所有功能。 图书馆如果您已经掌握了基本的文件读取和写入,并且对编程有一定的了解,我建议您进一步学习其他相关的库!😊
※ 提示:如果 Linux一起 命令行界面 (CLI)如果使用这种方法,文件读取和写入功能就显得尤为重要。Linux 是一种在利用云服务时使用的操作系统。由于 CLI 只是以文本形式传递数据并运行程序,因此,我们可以利用它来读取和写入仅以文本形式存在的文件的,并创建自动化程序。 Windows 一样的 图形用户界面 (GUI)用户可以使用鼠标和键盘轻松地操作。 命令行界面(CLI)本身不使用图形元素。 然而,如果使用图形元素,则会带来许多 资源因此,需要有效地管理内存,这变得非常重要。 掌握文件读写操作,对程序开发非常有帮助。
支持文件读取和写入功能 第三阶段进行... 首先,打开文件。其次,读取或写入文件。最后,关闭文件。
首先,打开文件是一个必经的步骤,无论是在读取还是写入文件时都需要进行。 打开 使用函数,并通过 open() 函数的返回值 文件处理程序用户可以获得这些功能。此时,文件并不能立即读取或写入,而是处于正常工作状态,等待用户进一步使用。
file = open('경로와 파일이름', '읽기 모드, 쓰기 모드 중 선택', '인코딩 요소')`open()` 函数虽然有多种参数,但通常会使用上面示例中提到的参数。 路径这很重要,因为路径可能会导致很多错误。 “阅读模式”基本上 'r'并且可以编写 “写作模式”是 “w”此外,还有更多不同的模式,建议在学习过程中多多探索和尝试。 编码(字符集) 虽然并非必须,但根据文件编码方式,可能会出现韩文显示乱码的情况。 ASCII 编码、Unicode了解这些概念是有帮助的,而且有很多相关的优秀文章,因此我建议您去查找。我们通常使用的编码方式是: “UTF-8”是。
※ 提示:路线 对方路径哇 绝对路径存在。相对路径会从我当前所在的目录出发,查找可用的文件。绝对路径则从根目录出发,查找可用的文件。在相对路径中,我当前所在的目录是 '.'是。 紧接着的父级目录是: “...”并且有可能继续上涨。 绝对路径,以 Windows 为例, 'C:/User/USER/····' 这种方式进行配置。 由于路径设置错误,导致无法打开文件的情况比想象中要常见,因此需要充分的练习。
现在打开文件后,您需要读取或写入内容。
line = file.readline()
lines = file.readlines()
print(line, end="")
결과 출력 ==> '안녕하세요.'
print(lines)
결과 출력 ==> ['안녕하세요.\n', '파일을 읽고 있습니다.\n']首先,用于读取文件的函数主要有以下几种: readline()鸡蛋 readlines()利用 `readline()` 函数。如上例所示,`readline()` 函数逐行读取文本文件。而 `readlines()` 函数会将所有内容逐行添加到列表中。 重要的是,在使用 `open()` 函数打开文件时,需要注意... 换行 您可以指定属性,如果没有指定,则默认使用... '\n' 换行是默认值。因此,当输出 `lines` 变量时,每个元素都显示为 `\n`。 逃脱字符可以清楚地看到里面。
※ 提示:`readline()` 和 `readlines()` 函数都使用 `open()` 函数来逐行读取文件。 查找(), 调用函数 与诸如这些函数的相关 长大 建议您理解这些概念。 也有很多整理好的优秀文章,您可以参考。
text1 = '안녕하세요.' + "\n"
text2 = '이번엔 파일을 작성해볼거에요.' + "\n"
file.write(text1)
file.write(text2)
text_list = ['안녕하세요.\n', '이번엔 파일을 작성해볼거에요.\n', '우와, 리스트로 작성하네요.\n']
file.writelines(text_list)在写入文件时 write() 函数和 writelines() 它使用了函数。 值得注意的是,`text1` 和 `text2` 变量都添加了换行转义字符。 在写入文件时,必须使用转义字符来明确换行,才能正确显示换行。 `write()` 函数用于编写字符串,但, writelines() 类似于 readlines(),它也是一个字符串列表。它可以一次性生成,根据具体情况,可以灵活运用。建议都了解一下。
※ 提示: 有时,当我们尝试打开一个文件,却发现它根本不存在,可能会感到困惑。 在 `open()` 函数中,用于写入文件的路径和文件名,是我自己创建的文件。 您希望保存的位置和文件名请在此处填写。如果该文件位置已经存在同名的文件,则… 覆盖 请注意!🥲
现在已经读取或写入了文件,因此需要再次关闭已打开的文件。如果不关闭,则先前通过 `open()` 函数获得的的文件句柄会一直存在于内存中。 内存泄漏这可能会导致性能下降,成为性能瓶颈。在关闭文件时,请使用 `file.close()` 方法。
with open('경로와 파일명', '읽기, 쓰기 모드', '인코딩') as f :
f.readline(), f.readlines()
f.write(), f.writelines()打开或关闭文件可能比想象中更复杂。而且,在编写较长的代码时,有时会忘记关闭文件。因此,有一个关键词可以方便地一次性处理这些操作。 “与”但如上例所示,在 `open()` 函数之前添加 "with" 关键字,使其像一个函数一样使用。 : 在冒号后面,请写明要执行的具体动作。 特别是 “就像这样”如果您使用 `open()` 函数,并且在函数调用后,在 `as` 后面指定一个变量名,该变量将接收文件句柄,那么您就可以使用与该变量名相同的名称来调用读取和写入文件相关的函数。
任务:输入要发送的消息,对消息进行加密,然后生成加密后的文件,并生成解密后的文件。
我认为这个任务对学习文件读写功能都很有帮助。这次我直接附上示例代码,建议大家慢慢练习。
#암호화 파일 생성
#메시지 입력
def inputText() :
lines = []
while True :
text = input("메시지 입력 : ")
if text == "" :
break
else :
lines.append(text)
return lines
#암호화 파일 생성
def fileCode() :
lines = inputText()
with open("C:\\Users\\user\\OneDrive\\바탕 화면\\code.txt", "w", encoding="utf-8") as f :
for txt in lines :
for tt in txt :
ascii = ord(tt)
if tt == ' ' :
f.writelines(chr(ascii))
else :
ascii -= 30000
f.writelines(chr(ascii))
f.writelines("\n")
fileCode()
#해독한 파일 생성
#파일 불러오기
def callFile() :
texts = []
with open("C:\\Users\\user\\OneDrive\\바탕 화면\\code.txt", "r", encoding="utf-8") as f :
while True :
line = f.readline()
if line == '' :
break
else :
line = line.split('\n')[0]
texts.append(line)
return texts
#복호화
def descrambling() :
lines = callFile()
with open("C:\\Users\\user\\OneDrive\\바탕 화면\\des.txt", "w", encoding="utf-8") as f :
for txt in lines :
for tt in txt :
ascii = ord(tt)
if tt == ' ' :
f.writelines(" ")
else :
ascii += 30000
f.writelines(chr(ascii))
f.writelines("\n")
descrambling()※ 提示:路径中出现“\\”的原因是,系统将其识别为转义字符,导致路径无法正确识别。因此,为了明确表示这是一个有效的路径,需要再次使用“\\”。
本次课程中,我也分享一些遇到的困难任务。 任务是自动配置用于后续学习的网络和 Linux 服务器的文件。 虽然这个概念目前还不太清晰,我尝试按照规则进行配置,但结果并不理想。 建议大家尝试一下,或许会有帮助。
以下有两个配置文件。
#다음은 setup.cfg 파일의 설정임
#WEB config
LISTEN : 8001;
SERVER_NAME : www.myserver.com;
proxy_pass : http://1.2.3.4:8080;
#WAS config
DB...
#server.cfg설정 파일
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.html;
}
}任务:读取 `setup.cfg` 文件,并保存 `listen`、`server_name`、`proxy_pass` 等属性及其对应的值。然后,读取 `server.cfg` 文件,并根据相应的属性修改其值。例如,`listen` 的值从 80 变为 8001。如果 `setup.cfg` 文件中没有定义相应的属性,则将其添加到 `'location / {}'` 的配置中。
#config파일경로
def configPath() :
path = input("경로 : ")
return path
#config 파일 불러오기
def config(path) :
path = path + "\\setup.cfg"
cfg = {}
with open(path, "r", encoding="utf-8") as f :
while True :
#데이터 가공 key, value로 구분(ex. 'LISTEN_PORT : 8001;\n'에서 마지막 ';\n'빼고)
#":"기준으로 split 후 'LISTEN_PORT'는 key, '8001'은 value
line = f.readline()
if line.count(":") > 0 :
index = line.find("\n")
line = line[:index]
idx = line.find(":")
key = line[:idx].lower().strip()
value = line[idx+1:].lower().strip()
cfg[key] = value
if line == "" :
break
print("불러오기 성공")
return cfg
#server.cfg 파일 불러오기
def server(path, cfg) :
path = path + "\\server.cfg"
keyList = list(cfg.keys())
with open(path, "r+", encoding="utf-8") as f :
lines = f.readlines()
for i in range(len(lines)) :
for key in keyList :
if lines[i].lower().find(key.lower()) >= 0 :
line = lines[i].split("\t")
line[-1] = cfg[key] + "\n"
chgLine = "\t".join(line)
lines[i] = chgLine
keyList.remove(key)
elif lines[i].lower().find(key.lower()) < 0 :
line = lines[i].split("\t")
if 'location / {\n' in line :
newLine = ['\t', key, cfg[key]+"\n"]
chgLine = "\t".join(newLine)
lines.insert(i+1, chgLine)
#파일의 맨 처음으로 커서이동
f.seek(0, 0)
#파일의 전체 내용 새로 쓰기
f.writelines(lines)
print("변환 성공")
#main
def main() :
path = configPath()
cfg = config(path)
server(path, cfg)
main()这是一个我认为需要进一步改进的代码示例。希望大家能写出更好的代码。
Ⅲ. Python 类
在撰写关于课程的文章之前 面向对象编程这是一个非常重要、复杂且内容详实的课题,需要通过多本书籍来阐述。由于篇幅限制,我建议大家将其作为一本概要或入门读物来阅读。
首先, 对象这是一个在编程领域用来指代各种物品的术语。 “物品” 简单来说就是 可以是人,也可以是汽车、动物、智能手机、平板电脑等等。 什么样的 属性鸡蛋 行为就像人有手和脚,可以行走、进食和睡眠,汽车也有轮子、发动机和电池,可以向前行驶、向后行驶以及播放音乐。在这里,人与汽车都是对象。手、脚、轮子、发动机和电池是对象的属性,而行走、进食、睡眠、向前行驶、向后行驶和播放音乐则是动作。
在Python中,允许使用已经创建的对象。Python的 字符串可以将其视为一个整体。 这些属性包括:find(), lower(), upper() 等。它具有 `len()` 函数,而 `len()` 函数是我们经常使用的方法。
※ 提示:可以将“메소드”理解为一种简单的函数或操作,这样可能会更容易理解。
这个课程是一种…… 设计图但我想要制作的 对象的属性可以用成员变量来定义,而行为可以用方法来定义。这些数据可以用于开发和改进相关程序。
class 클래스명 :
#멤버 변수
def 메소드명 :
def __init__(self) :
#생성자以这种方式进行声明和定义。
class car :
car_name = '자동차'
def __init__(self, car_name) :
self.car_name = car_name
def go(self) :
print(self.car_name + '가 앞으로 간다.')例如,我们可以假设“汽车”是一个类。在这种情况下,“汽车”的名字可以被视为类的属性,也可以被视为类的成员变量。 go() 这个函数表示汽车正在向前行驶。
※ 提示: __init__() 构造函数 一旦对象被创建,就会立即被调用。 构造函数可以明确地说明一个类所代表的对象,并且可以通过参数来初始化成员变量。 了解构造函数的方法是... “生命周期”建议您了解这一点。 相关的资料很多 必须 建议您去看看。
genesis = car('제네시스')
genesis.go()
출력 결과 ==> '제네시스가 앞으로 간다.'创建和使用类时,通常会采用这种结构。在类中声明变量,如果类有带参数的构造函数,则需要提供参数。如果没有,也可以省略。然后,可以使用这些变量名来调用类的成员函数,从而构建程序的逻辑。
与 `__init__()` 方法相反 __del__() 这是一个用于在类不再被使用时释放其内存空间的函数。当一个类被声明和定义,并被用于程序开发时,它会被分配到内存空间。为了有效地管理内存空间,在Java等语言中, 垃圾回收 (Garbage Collection)有一种方法可以自动销毁名为“이라고”的类,这在 Python 中也有实现。因此,您无需单独编写 `__del__()` 方法。
一种特殊的制作方法 __add__() 这个方法允许对象之间的加法运算。 之前,列表也支持加法和乘法运算,这个方法扩展了这种功能,使其适用于对象。
class car :
car_name = ''
def __add__(self, other) :
print("객체", self.car_name, "과", other.car_name, "가 친구가 되었습니다.")
genesis = car()
genesis.car_name = "제네시스"
k3 = car()
k3.car_name = "K3"
genesis + k3
출력 결과 ==> 객체 제네시스 와 K3 가 친구가 되었습니다.如上所述 两个对象(类)这使得我们可以同时使用相同类型的对象。 就像为“Genesis”和“K3”分别定义类一样,除了生成器之外,还可以定义其他类 我们可以直接访问成员变量,但建议不要这样做。 直接访问成员变量会导致代码冗长,并且难以维护。使用对象的另一个重要原因在于: 数据和内部结构(实现)的保护为... “封装”然而,这可能会违反设计原则,导致对象内部的逻辑暴露在外。
事实上,接下来... 类继承,对象的主要四大特性(继承、抽象、多态、封装) 涉及的概念非常广泛,不可能全部掌握,而且需要花费大量时间。因此,我建议持续学习,并积极寻找相关的优质资料进行学习。
评论
我一直在学习越来越复杂的 Python。特别是之前学习的列表、元组、字典和函数,这些都是必不可少的,而且掌握了这些知识,就可以构建一些东西。但要进行更高级的编程,就需要用到类。我对面向对象编程的概念不太理解,曾经花了很多时间去研究。虽然我现在还没有完全理解,但我感觉自己能够应用得更广泛,这让我感到很满意。接下来我将学习网络和 Linux,我对此充满期待,并且需要更加努力。😄
登录