Day3-----コレクション、リスト補足、ファイル

目次

1. 収集

{データ,データ,...} を設定します

コレクション内の型は不変型です

コレクションは変更可能です

コレクションは順序付けされておらず、添字をサポートしていません

収集データは繰り返されません

2. リストの補足

1. リストソートのキー

2. リストの内包理解

3. 書類

1. 基礎知識

 2. ファイルの 3 つの方法

 3. ファイル読み取り操作

 4. 空白文字を削除する

5.大きなファイルを読み取る

6. ストレージの概念

7. ファイルの分類

8. ファイルのバックアップ

4. 文書関連の研修

1. ファイル操作

2. 書類 


1. 収集

{データ,データ,...} を設定します

コレクション内の型は不変型です

コレクションは変更可能です

コレクションは順序付けされておらず、添字をサポートしていません

収集データは繰り返されません

my_set={1,2.3,4.56,'hell0',(34,547,)}
print(my_set)

# remove()
my_set.remove(1)
print(my_set)
# pop()
a=my_set.pop()
print(a)
print(my_set)
# add()
my_set.add(45)
print(my_set)
# clear()
my_set.clear()
print(my_set)

# 去重
my_list=[1,2,564,76,7,7,84,1]
print(my_list)
my_list=list(set(my_list))
print(my_list)

2. リストの補足

1. リストソートのキー

# 数据类型保持一致
my_list=[1,3,5,7,9,45]
my_list.sort()
print(my_list)

list1=[{'name':'d','age':19},
       {'name':'b.txt','age':16},
       {'name':'a','age':16},
       {'name':'c','age':20}]
# 列表中的数据为字典时,需指定排序规则
list1.sort(key=lambda x:x['name'])
print(list1)
list1.sort(key=lambda x:x['age'])
print(list1)
list1.sort(key=lambda x:(x['age'],x['name']))
print(list1)


list2=['a','b.txt','sfa','defgf','fhdk']
list2.sort()
print(list2)
list2.sort(key=lambda x:len(x))
print(list2)

2. リストの内包理解

# 快速生成列表、字典

# 1.txt、变量=[生成数据的规则 for 临时变量 in xxx]
my_list1=[i for i in range(5)]
my_list2=['hello' for i in range(5)]
my_list3=[f'num:{i}' for i in range(5)]
print(my_list1)
print(my_list2)
print(my_list3)

# 2、变量=[生成数据的规则 for 临时变量 in xxx if xxx]
# if 成立才生成
my_list4=[f'num:{i}' for i in range(9) if i%2==0]
print(my_list4)

# 3、变量=[生成数据的规则 for 临时变量 in xxx for j in xxx]
# 第二个for循环循环一次,生成一个数据
my_list5=[f'num:{i,j}' for i in range(3) for j in range(3)]
print(my_list5)


# 字典推导式
# 变量={生成字典的规则 for 临时变量 in xxx]
my_dict={f'name{i}':i for i in range(3)}
print(my_dict)

my_dict={f'name{i}{j}':j for i in range(3) for j in range(3)}
print(my_dict)

3. 書類

1. 基礎知識

ファイル機能:
    データを永続的に保持します。
    ハードディスクに保存されるファイルの形式はバイナリです。
操作: 開く --> 読み取り --> 

1.txt を操作し、ファイルを開いてハードディスクからメモリに保存します
。open(file , moder='r', encoding ='') 
file: ファイル名
moder: ファイルのオープン方法 r() read w(write) a(append) append
エンコーディング: エンコード方法 utf-8 gbk 
2. 読み取りと書き込み
read() 
3. close 
close() してメモリに保存します 3 つの主要なファイルは、ファイルを開く open 関数を使用してハードディスクに同期されます

エンコード方式が指定されていない場合、Windows はデフォルトで gbk 
write 関数を使用して書き込みます。

 2. ファイルの 3 つの方法

# r方式 文件不存在时,报错;
f=open('a.txt','r',encoding='utf-8')
buf=f.read()
print(buf)
f.close()

# w方式 文件不存在时,自动创建;文件存在会覆盖清空源文件
f=open('a.txt','w',encoding='utf-8')
f.write('hello world\n')
f.write('hello python\n')
f.write('你好')
f.close()

# a方式 文件末尾写入内容 文件不存在时,自动创建
f=open('a.txt','a',encoding='utf-8')
f.write('她她她\n')
f.write('他他他\n')
f.close()

 3. ファイル読み取り操作

文件的读操作
buf=f.read(3) # 读三个字符
buf=f.read(3) # 再次读取时,如果有第二行,也会读取换行符\n
文件的读操作--按行读取
buf=f.readline() #读取一行 读取一次后,下次读取新内容
buf=f.readlines() #读取所有行 返回值为列表,一项为一个字符串

 4. 空白文字を削除する

f=open('a.txt','r',encoding='utf-8')
buf=f.readlines()
print(buf)
# 去除空白字符  列表推导
buf=[i.strip() for i in buf]
print(buf)
f.close()

5.大きなファイルを読み取る

# 有多行
f=open('a.txt','r',encoding='utf-8')
while True:
    buf=f.readline()
    if buf:
        print(buf,end='')
    else:
        # 文件读完
        break
f.close()

# 没有多行
f=open('b.txt', 'r', encoding='utf-8')
while True:
    buf=f.read(5)
    if buf:
        print(buf,end='')
    else:
        # 文件读完
        break
f.close()

6. ストレージの概念

コンピュータ内のサイズ 16 進数
: 2
     進数 8 進数 10 進数 16 進数
     最小
単位: bit (ビット)  
     バイト
: 基本記憶単位バイト 1byte=8 bit 
1KB=1024 
byte 
1MB=1024KB 1GB=1024MB 
1TB=1024GB 
100Mbit 12.5MB/s 
200Mbit 25MB/s

7. ファイルの分類

文本文件 txt  py  能使用记事本打开的文件
文本文件可以使用文本、二进制文件打开
二进制文件只是使用二进制方式打开  rb vb ab
二进制文件 mp3 mp4 rmvb 等 

f=open('c.txt','wb')
f.write('你好'.encode()) # 字符串转换为二进制
f.close()

f=open('c.txt','rb')
buf=f.read()
print(buf)
print(buf.decode())
f.close()

8. ファイルのバックアップ

1、用只读方式打开文件
2、读取
3、关闭
4、只写方式打开新文件
5、将第二部内容写入新文件
6、关闭新文件

file_name=input('请输入要备份的文件名')

f=open('file_name','rb')
buf=f.read()
f.close()

index=file_name.rfind('.')
new_filename=file_name[:index]+'[备份]'+file_name[index:]
f_w=open('new_filename','wb')
f_w.write(buf) # 字符串转换为二进制
f.close()

9. ファイル関連の操作

import os

# 文件重命名
os.rename(源文件路径名,新文件路径名)

# 删除文件
os.remove(文件路径名)

# 创建文件夹
os.mkdir(目录路径名)

# 获取当前目录
os.getcwd()

# 改变默认目录
os.chdir('../')

# 获取目录列表
os.listdir('./')

# 删除文件夹
os.rmdir(目录名)
'''


'''
import os

# 批量创建文件名
def create_files():
    os.chdir('test')
    for i in range(8):
        file_name='file_'+str(i)+'.txt'
        f=open(file_name,'w')
        f.close()
    os.chdir('../')

# 批量修改文件名
def modify_filename():
    os.chdir('test')
    buf_list=os.listdir()
    for file in buf_list:
        new_file='ly'+file
        os.rename(file,new_file)
    os.chdir('../')

# 批量删除文件名局部
def re_filename():
    os.chdir('test')
    buf_list=os.listdir()
    for file in buf_list:
        num=len('ly')
        new_file=file[num:]
        os.rename(file,new_file)
    os.chdir('../')
re_filename()
'''

4. 文書関連の研修

1. ファイル操作

トピックス1 【強化トレーニング】

質問幹

ファイル操作を使用して、movie.txt次の内容をファイルに書き込みます。

功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥

トレーニングターゲット

  • ファイル書き込み操作

トレーニングのヒント

  • ファイルにデータを書き込む方法

  • 書き込まれたデータをラップするために使用される方法

参考プラン

  • ファイルopen()を開く"w"

  • ファイルに書き込むwrite()

  • 改行の使用"\\n"

  • 3 つの引用符の形式を使用することもでき""" """、コード内に直接改行を記述することもできます。

ステップ

  • ファイルを開き、オブジェクトを作成する

  • 情報を書き込む

  • ファイルを閉じる

参考回答

  • 最初の方法

# 因为编码格式的问题,我们为了防止出现乱码,需要在这里设置encoding="utf8"
f = open("movie.txt","w", encoding="utf8")
f.write("功夫,周星驰\\n一出好戏,黄渤\\n我不是药神,徐峥")
f.close()
  • 2番目の方法

f = open("movie.txt","w",encoding="utf8")
f.write("""功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥""")
f.close()

トピックス2 【トレーニングの強化】

質問幹

最初の質問で作成したファイルを開いて内容を読んでください。要件は次のとおりです。

  • 一気に読む

  • 一度に1行ずつ読んでください

トレーニングターゲット

  • ファイル読み取り操作

トレーニングのヒント

  • ファイルの内容を読み取るにはどうすればよいですか?

  • コンテンツ全体を読む方法はありますか?

  • 一度に1行ずつ読む方法はありますか?

参考プラン

  • ファイルを開く open、「r」で開く

  • ファイルの読み取り read()

  • 行を読み取る readline()

  • すべての行を読み取ります readline()

ステップ

  • ファイルを開きます(ファイルを開くには r メソッドを使用します。書き込みをしない場合、デフォルトでは読み取り専用モードで開きます)

  • 情報を読む

  • ファイルを閉じる (操作のたびにファイルを閉じる)

参考回答

  • 最初の方法

    # 注意编码格式问题
    f = open("movie.txt",'r',encoding="utf8")
    content = f.read()
    f.close()
    print(content)
    
  • 2番目の方法

    f = open("movie.txt",'r',encoding="utf8")
    content = f.readlines()
    f.close()
    # 读取后的内容是一个列表,注意列表中的数据中有一个"\\n"。如果使用需要处理
    print(content)
    
  • 第三の道

    f = open("movie.txt",'r',encoding="utf8")
    # 因为readline 每次读取一行,需要我们使用循环读取
    while True:
        content = f.readline()
        # 当我们读取的内容是空字符的时候跳出循环
        if content == "":  # if content:
            break
        print(content)
    f.close()
    

トピックス3 【トレーニングの強化】

質問幹

  • OSモジュールを使用して「dark horse」という名前のフォルダーを作成します。

  • dark horse フォルダーが現在配置されているディレクトリを取得します。

  • 現在のディレクトリのリストを取得する

  • ファイル操作パスの変更

  • ダークホースフォルダーを削除する

トレーニングターゲット

  • OSモジュールの使用

トレーニングのヒント

OSモジュールの基本コマンドの使い方

参考プラン

ファイルmkdirを作成する

カレントディレクトリgetcwd

現在のディレクトリのリスト listdir

ファイルchdirの操作パスを変更する

フォルダーrmdirを削除

ステップ

参考回答

import os

# 01
os.mkdir("黑马")
# 02
os.getcwd()
# 03
os.listdir("../../../../../Desktop/")
# 04
os.chdir("../../../../../")
# 05
os.rmdir("黑马")

議題4【総合研修1】

質問幹

2 つのファイル間の相互バックアップを完了するコードを作成します。

  • ユーザーにファイル名の入力を求めます。例: gailun.txt

  • ユーザーが入力した名前でファイルを作成します

  • ファイルを開いて次の情報を書き込みます

    カンフー、スティーブン・チョウ

    良いショーだった、黄波

    私は医学の神ではありません、徐正

  • 入力データを端末に出力します

  • フォルダー内に gailun.txt ファイルのコピーを作成します。

  • gailun.txt ファイル内のデータを Gailun copy.txt ファイルに書き込みます

  • ファイルを開いてファイルの内容を表示します

トレーニングターゲット

  • ファイルの包括的な使用

トレーニングのヒント

  • 操作のたびにファイルを閉じる必要がある

  • Windowsシステムのエンコード形式の問題に注意してください

  • 新しいファイル名を自分で再定義する必要があります

参考プラン

ステップ

  • 操作ステップ 1

    • ユーザーにファイル名の入力を求める

    • ファイルを開く

    • 情報を書き込む

    • ファイルを閉じる

    • ファイルを開く

    • ファイル内の情報を読み取る

  • 操作ステップ 2

    • ファイル名の接尾辞を抽出します

    • 新しいファイル名を作成する

  • ステップ3

    • 新しく形成されたファイル名でファイルを開きます

    • 手順1で読み取った情報を新しいファイルに書き込みます

    • ファイルを閉じる

  • ステップ4

    • 新しいファイルを開く

    • ファイルの内容を読み取る

    • ファイルを閉じる

参考回答

# 提示输入文件
oldFileName = input("请输入要创建的文件名:")
# 以写的方式打开文件
oldFile = open(oldFileName, 'w', encoding="utf8")
oldFile.write("功夫,周星驰\\n一出好戏,黄渤\\n我不是药神,徐峥")
oldFile.close()
# 打开文件
f = open(oldFileName, 'r', encoding="utf8")
#读取文件内容
context = f.readlines()
print(context)
f.close()

# 提取文件名的后缀
fileFlagNum = oldFileName.rfind('.')
# 确定文件名中有没有后缀, rfind() 找到内容返回正数下标,没有找到,返回-1
if fileFlagNum > 0:
    fileFlag = oldFileName[fileFlagNum:]

# 组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + '复本' + fileFlag

# 创建新的文件副本
newFile = open(newFileName, 'w',encoding="utf8")
for lineContent in context:
    print(lineContent)
    newFile.write(lineContent)
newFile.close()

# 打开写入的新文件
f = open(newFileName, "r", encoding="utf8")
# 读取内容
context = f.read()
# 输入到终端
print(context)
# 关闭文件
f.close()

議題5【総合研修2】

質問幹

  • 新しいプロジェクトに py という名前の新しいフォルダーを作成します

  • py フォルダーに入り、5 つのファイルを作成します。ファイル名は、python Basic class-1.txt、Python Basic class-2.txt、Python Basic class-3.txt、Python Basic class-4.txt、Python Basic Class-5 です。 。TXT

  • 次に、py フォルダー内のすべてのファイルの名前を [Dark Horse] Python Basic Class-1.txt、[Dark Horse] Python Basic Class-2.txt、[Dark Horse] Python Basic Class-3.txt、[Dark Horse] に変更します。 Python 基本クラス Class-4.txt、[Dark Horse] Python 基本クラス Class-5.txt

トレーニングターゲット

  • OSモジュールの総合活用

トレーニングのヒント

  • まずフォルダーを作成し、ファイルを作成します

  • 次に、現在のフォルダー内のすべてのファイルを取得します

  • 最後に名前を変更します

参考プラン

  • フォルダーmkdirを作成する

  • chdirをフォルダーに入れる

  • listdir フォルダー内のすべてのファイルを取得します

  • 名前を変更する

ステップ

  • 最初の部分

    • フォルダーを作る

    • フォルダに

    • ループして 5 つのファイルを作成し、作成するたびにファイルを閉じます。

  • 第二部

    • フォルダー内のすべてのファイルを取得する

    • 取得したファイルをスキャンし、ファイル名を変更します。

参考回答

# 第一部分
import os
# 创建文件夹
os.mkdir("py")
# 进入py文件夹中
os.chdir("py")
# 创建5个文件
for i in range(1, 6):
    f = open("python基础班-%d.txt" % i, "w")
    f.close()

# 第二部分
# 进入py文件夹中,由于上边代码中已经进入到“py”文件夹里面,这里就不用再次进入了
# os.chdir("py") 
# 获取py文件夹中所有的文件
filename_list = os.listdir()
# 遍历文件
for file_name in filename_list:
    # 进行修改
    new_file_name = "[黑马]" + file_name
    os.rename(file_name, new_file_name)

2. 書類 

トピックス【強化トレーニング】

質問幹

再帰を使用して 1 ~ 100 を合計する

トレーニングターゲット

  1. 再帰の使用

トレーニングのヒント

  1. 再帰の特徴は何ですか?

  2. 数値の累積和を求めるにはどうすればよいですか?

参考プラン

  1. 再帰関数の特徴 ①関数が自分自身を呼び出す ②関数に終了条件がある

  2. num の累積和を求めるには、num-1 の累積和に num を加算するだけです。

ステップ

  1. 書き込み終了条件

  2. 再帰呼び出しを書く

参考回答

def sum_num(num):
    # 如果是1, 直接返回1
    if num == 1:
        return 1
    # 如果不是1, 重复执行累加
    return num + sum_num(num - 1)


result = sum_num(100)
print(result)

トピックス【強化トレーニング】

質問幹

ファイル a.txt に書かれた内容を実現するプログラム好好学习,天天向上

トレーニングターゲット

  1. ファイル操作の演習

トレーニングのヒント

  1. Pythonでファイルを操作するにはどうすればよいですか?

  2. ファイルにコンテンツを書き込むにはどうすればよいですか?

参考プラン

  1. open関数を使ってファイルを開く

  2. コンテンツをテキストに書き込むには、write 関数を使用します。

  3. close関数でファイルを閉じる

ステップ

  1. ファイルを開く

  2. コンテンツをファイルに書き込む

  3. ファイルを閉じる

参考回答

# 1. 打开文件
f = open("test/a.txt", 'w', encoding="utf-8")

# 2. 向文件中写入内容
f.write("好好学习,天天向上")

# 3. 关闭文件
f.close()

おすすめ

転載: blog.csdn.net/m0_46493223/article/details/126090500