《Python数据分析基础》第一章-Python基础(1.4.8-1.7)

1.4 Python语言基础要素

续前篇:《Python数据分析基础》第一章-Python基础(1.4.5-1.4.7)—— Flerken101

1.4.8 控制流

1.4.8.1 if-else

x = 5

# if-else语句
if x > 4 or x != 9:   # or 操作符,只要两个条件有一个为真,那么就为真
    print("Output #124: {}".format(x))
else:
    print("Output #124: x is not greater than 4")

在这里插入图片描述

1.4.8.2 if-elif-else

x = 5

# if-elif-else语句
if x > 6:
    print("Output #125: x is greater than six")
elif x > 4 and x == 5:
    print("Output #125: {}".format(x*x))
elif x == 6:  # 什么也不做
    pass  #必须写一个pass空语句,表示什么也不做
else:   # x <= 4 
    print("Output #125: x id not greater than 4")

在这里插入图片描述

1.4.8.3 for循环

Python for i in range ()用法详解 —— Vincent__Lai

Python startswith()方法

y = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\
     'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

z = ['Annie', 'Betty', 'Claire', 'Daphne', 'Ellie',\
     'Franchesca', 'Greta',  'Holly', 'Isabel', 'Jenny']
    
# 打印出列表y 中的每个值   
print("Output #126: ")
for month in y:   # month是一个临时占位符,表示序列中的各个值,并且只在 for 循环中有意义。
    print("{:s} ".format(month))
    
    
# 对于 0~9 的整数序列中的一个整数 i,打印出整数 i,再打印一个空格,然后打印出列表 z 中索引值为 i 的元素值。    
print("Output #127: (index value: name in list)")
for i in range(len(z)):  # i依次取range函数生成的序列中的整数
    print("{0:d}: {1:s}".format(i,z[i]))


# 使用从一个序列z中生成的索引值,来引用另一个序列y中具有同样索引值的元素
print("Output #128: (access elements in y with z's index values)")
for j in range(len(z)):               # range(len(z)生成从0到9的整数序列,并依次赋值给变量j
    if y[j].startswith('J'):          # 测试列表y 中索引值为j的元素,是否以大写字母J开头
        print("{:s}".format(y[j]))    # 是的话,就将列表y中 这个索引值j处的元素y[j] 打印出来


# 使用for循环依次打印出字典的每个键-值对
another_dict = {'x':'printer', 'y':5, 'z':['star','circle',9]}
print("Output #129: ")
for key,value in another_dict.items():
    print("{0:s}, {1}".format(key,value))

'''
 another_dict.items()生成一个列表,列表中的每个元素是一个元组,每个元组中包含两个元素,即每个 “键-值对” 的字典键值和字典值。
 一次性定义两个临时占位符 key 和 value,依次将列表中每个元组元素的前一个元素和后一个元素赋值给它们,
 再将其依次打印出来。  '''

在这里插入图片描述

1.4.8.4 简化for循环:列表、集合与字典生成式

所有生成式的语句 [ ] 或 { } 中都包含三部分:

单个/多个临时占位符(或用临时占位符表示的表达式) + for循环语句(可以有多个) + if判断条件(可省略)

如以下三种都是列表生成式语句:
[ x for x in my_data]
[x * x for x in range(1, 11) if x % 2 == 0]
[m + n for m in ‘ABC’ for n in 'XYZ ']
列表生成式—— 廖雪峰

利用 省略生成式中if判断条件set()方法,可以找出列表中不重复的元素。
但这两种方法,都仅适用于 元组集合的列表 [(), (), ()]

其中,set方法的输出结果格式总为 {(), (), ()}

不适用于列表集合的列表,即不适用于[[], [], []] 形式的列表。

对于单个字符的列表[a,b,c,c] ,仅可以使用 set()方法 找出列表中不重复的元素,
且输出结果格式为 { a, b, c },不是列表、元组,也不是字典。

1.4.8.4.1 列表生成式
'''
列表生成式: 
    对象:一个列表,其中的元素或为单个字符,或都为列表[[], [], []]
    括号:方括号 []
    语句:[临时占位符  for 临时占位符 in 列表名称  if 判断条件]
'''
# 对于my_data中的每一行,如果这行中索引位置2的值(即第三个值)大于5,则保留这一行
my_data = [[1,2,3], [4,5,6], [7,8,9]]
rows_to_keep = [row for row in my_data if row[2] > 5 ]
print("Output #130: (list comprehension): {}".format(rows_to_keep))



# 使用set()方法找出列表中不重复的元素,仅有这一种方式
#【  set方法不适用于列表集合的列表[[], [], []]   】
my_data = [1,2,3,4,5,6,7,8,9,7,8,9]
rows_to_keep = set(my_data)
# 注意输出结果的格式,输出的不是列表,也不是字典
print("Output ###: (set function): {}".format(rows_to_keep))
#输出:Output ###: (set function): {1, 2, 3, 4, 5, 6, 7, 8, 9}


# 当省略列表生成式中的if判断条件时,则什么也不做,原样输出
my_data1 = [[1,2,3], [4,5,6], [7,8,9], [7,8,9]]
rows_to_keep1 = [row for row in my_data1]  
print("Output ###1: (没有if, list comprehension): {}".format(rows_to_keep1))

my_data2 = [1,2,3,4,5,6,7,8,9,7,8,9]
rows_to_keep2 = [row for row in my_data2]  
print("Output ###2: (没有if, list comprehension): {}".format(rows_to_keep2))

在这里插入图片描述

1.4.8.4.2 集合生成式
'''
集合生成式:
    对象:一个列表,其中的元素都为元组 [(), (), ()]
    括号:花括号 {}
    语句:{临时占位符  for 临时占位符 in 元组集合的列表名称  if 判断条件}
'''
# 对于my_data中的每个元组,如果它是一个唯一的(不重复的)元组,则保留这个元组
my_data = [(1,2,3), (4,5,6), (7,8,9), (7,8,9)]
set_of_tuples1 = {x for x in my_data}          # 当省略if判断条件时,则为找出列表中不重复的元组
print("Output #131 (set comprehension): {}".format(set_of_tuples1))
# 注意输出结果的格式为 {(), (), ()}

# 与不带if判断条件的集合生成式 等价的 set方法 (set方法仅适合于元组集合和单个字符元素的列表,不适用于列表集合的列表 )
set_of_tuples2 = set(my_data)
print("Output #132 (set function): {}".format(set_of_tuples2))
# 注意输出结果的格式为 {(), (), ()}

在这里插入图片描述

1.4.8.4.3 字典生成式
'''
字典生成式:
    对象:一个字典,其中的元素都为“键-值对” key : value
    括号:花括号 {}
    语句:{临时占位符(形式必须为key : value)  for 临时占位符(形式为key, value) in 字典名称.items()  if 判断条件}
    注意:在字典生成式中,要先用 字典名称.items() 获取 以键-值对形成的元组为元素的列表,
        即:[(key1, value1), (key2, value2), (key3, value3)]
        然后对该元组集合的列表使用生成式语句。
'''
# 对于my_dictionay中的每个键-值对,如果值大于10,则保留这个键-值对。
my_dictionary = {'customer1': 7, 'customer2': 9, 'customer3': 11}
my_results = {key : value for key, value in my_dictionary.items() if value > 10}
print("Output #133 (dictionary comprehension): {}".format(my_results))


# 当字典生成式中省略if判断条件时,则为找出列表中不重复的元组(即字典中不重复的 “键-值对” )
my_dictionary = {'customer1': 7, 'customer2': 9, 'customer3': 11, 'customer3': 11}
my_results = {key : value for key, value in my_dictionary.items() }
print("Output ### (没有if, dictionary comprehension ): {}".format(my_results))


# 与不带if判断条件的字典生成式 等价的 set方法(set方法仅适合于元组集合和单个字符元素的列表,不适用于列表集合的列表 )
my_results = set( my_dictionary.items())
#输出形式与上面的有所不同
print("Output ### (set function): {}".format(my_results))

在这里插入图片描述

1.4.8.5 while循环

print("Output #134: ")
x = 0
while x < 11:
    print("{0:d}".format(x))
    x += 1

在这里插入图片描述

1.4.8.6 函数

# 定义一个计算一系列数值均值的函数

# 书写方式一:
def getMean(numericValues):
    if(len(numericValues) > 0):
        return sum(numericValues)/len(numericValues)
    else:
        return float('nan')
    
my_list = [2, 2, 4, 4, 6, 6, 8, 8] 
print("Output #135 (mean): {:.2f}".format(getMean(my_list)))    

# 方式三:调用
import numpy as np  # 模块numpy中已存在方法mean()
print(np.mean(my_list))

在这里插入图片描述

# 书写方式二:return、if、else 这三个必须都得在同一行
def getMean(numericValues):
    return sum(numericValues)/len(numericValues) if len(numericValues) > 0 else float('nan')

my_list = [2, 2, 4, 4, 6, 6, 8, 8] 
print("Output #135 (mean): {:.2f}".format(getMean(my_list)))    

在这里插入图片描述

1.4.8.7 异常

Python 中包含了若干种内置的异常对象。
常用的异常包括:

IOError、AttributeError、ImportError等分别代表的异常——Sherry_shiry
IOError:输入输出异常
IndexError:下标索引超出序列边界
KeyError:试图访问你字典里不存在的键
NameError:使用一个还未赋予对象的变量
SyntaxError:Python代码逻辑语法出错,不能执行
AttributeError:试图访问一个对象没有的属性
ImportError:无法引入模块或包,基本是路径问题
IndentationError:缩进错误,代码没有正确的对齐

TypeError和ValueError的区别 —— qq_40832034
TypeError:函数或方法接受了不适当的【类型】的参数,比如sum(‘nick’),sum函数不接受字符串类型。

ValueError:函数或方法虽然接受了正确的【类型】的参数,但是该参数的【值】不适当,比如int(‘nick’),int函数可以接受字符串类型,但是’nick’字符串不具备表示一个整数的含义,如int(‘123’)可以。

Python:UnicodedecodeError编码问题解决方法汇总-彻底解决 —— tomorrownan
UnicodeError:脚本程序中编码与文件编码不一致

1.4.8.8 try-except

# 定义一个计算一系列数值均值的函数getMean
def getMean(numericValues):
    return sum(numericValues)/len(numericValues) 

my_list2 = []   # 实参为空列表

# 使用简单形式,即try-except代码块,来处理潜在的错误
try:            # 将要执行的代码放在try代码块中
    print("Output #138: {}".format(getMean(my_list2)))  
except ZeroDivisionError as detail:       # except 捕获
    print("Output #138 (Error): {}".format(float('nan')))    # 相当于发生ZeroDivisionError错误的情况下,函数的返回值
    print("Output #138 (Error): {}".format(detail))        # 将错误的详细信息打印出来

在这里插入图片描述

1.4.8.9 try-except-else-finally

# 定义一个计算一系列数值均值的函数getMean
def getMean(numericValues):
    return sum(numericValues)/len(numericValues) 

my_list2 = []   # 实参为空列表

# 使用完整形式,即try-except-else-finally代码块,来处理潜在的错误
try:
    result = getMean(my_list2)
except ZeroDivisionError as detail:      # 如果try代码块执行失败,那么就会执行except代码块
    print("Output #142 (Error): " + str(float('nan')))    # +号将两个字符串合并输出
    print("Output #142 (Error): ", detail)      # 将错误ZeroDivisionError的详细信息打印出来
else:             # 如果try代码块执行成功,那么就会执行else代码块
    print("Output #142 (The mean is): ", result)
finally:          # 不管try代码块执行成功还是失败,总是会执行finally模块
    print("Output #142 (Finally): The finally block is executed every time")     

在这里插入图片描述

1.5 读取文本文件

1.5.1 创建文本文件

Pyhon function —— open

问题总结python: can‘t open file ‘XXX‘: [Errno 2] No such file or directory —— ++加油呀

import sys 

# 读取文件

# 读取单个文件
input_file_name = sys.argv[0]    # 获取文件名称
print("要执行的脚本文件名称:" + input_file_name)         # 打印文件名称

input_file = sys.argv[1]  # 获取文件路径
print("要读取的文本文件路径: " + input_file)      #打印文件路径


# 创建一个文件对象,该文件对象中包括:(就像一个列表对象中,包含一些元素一样)
# 以r模式(只读模式)打开 获取到的文件路径input_file指向的文件 中的各个行。
filereader = open(input_file,'r')    # 这里的open()为python的内置函数 

 
print("读取到的文本文件对象filereader的类型:" + str(type(filereader)))   # <class '_io.TextIOWrapper'>
print("\n\n读取到的文本文件对象filereader的详细内容:")
print(filereader)   # 打印文件对象filereader的详细内容(即文件路径input_file指向文件中的各个行)


print("\n\nOutput #143: 读取到的文本文件对象filereader中的各行:")
for row in filereader:  # 使用变量row依次读取打开的各个行
    print(row.strip())  # 去掉每一行两端的空字符,并将其打印出来
    
    
filereader.close()  # 关闭该文件对象filereader
# 即关闭以r模式打开的 文件路径input_file指向的文件 中的各个行

假设 脚本 和 要读取的文件 都在桌面上。

cmd:
cd C:\Users\lenovo\Desktop
【命令窗口中的 提示符 一定要是 脚本文件的所在目录/文件夹。】

python first_script.py file_to_read.txt
【这里要执行的脚本 和 要读取的文本文件都在 同一文件夹目录下。】

格式:python 要执行的脚本名称 要读取的文本文件的完整路径 (必须写到文本文件的名称)
这样 Python脚本的命令行参数列表变量sys.argv 才能捕获 脚本名称 和 要读取的文件的路径,并写到相应索引位置处。
在这里插入图片描述

1.5.2 脚本和输入文件不在同一位置

当 脚本 和 要读取的文件不在 同一文件下时:
(1)同样,要先将 命令窗口中的提示符 指示为 脚本文件的所在目录/文件夹。

在命令窗口中,在任何目录下,使用命令py -0p 【其中0是零】
可显示已安装的 python 版本号及其所在的路径 的列表。   可用于配置环境变量。

在命令窗口中,若 提示符 为 C:\>   ,含义是:
C: 说明现在的工作盘是c盘,             
\  指示当前的工作目录是根目录,
> 的作用是把工作目录【可以是根目录也可以不是】和我们要输入的命令分隔开来。

若要转到某一指定目录,则需要先转到该指定目录的根目录,再使用命令:cd 指定目录的完整路径

返回到 当前根目录下的上一级目录,使用命令:cd ..
直接返回到 当前工作目录下的根目录,使用命令:cd \
从当前工作目录下返回到目标根目录,使用命令:目标目录: (如C: 或 D: 大小写均可)
在某一目录/文件夹下,输入 dir 可以查看当前文件夹中的所有文件
输入: python 脚本文件名称.py      则可运行位于该文件夹中的目标python文件

(2)然后,在该 脚本文件的所在目录 下输入:
python 要执行的脚本名称 要读取的文本文件的完整路径 (必须写到文本文件的名称)

这样 Python脚本的命令行参数列表变量sys.argv 才能捕获 脚本名称 和 要读取的文件的路径,并写到相应索引位置处。

------------------------------------------------------------------------------------------------------------------------

假设 脚本 和 要读取的文件 都更换了位置,且不在同一位置:
要执行的脚本文件名称:first_script.py
要执行的脚本文件路径:D:\百度网盘\Python数据分析基础
要读取的文本文件名称:file_to_read.txt
要读取的文本文件的完整路径:D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file_to_read.txt

则要在命令窗口中依次输入:
d: ———— 切换到脚本文件所在的根目录
cd D:\百度网盘\Python数据分析基础 ———— 切换到脚本文件所在的目录/文件夹
python first_script.py D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file_to_read.txt ——执行该文件夹中的脚本,并根据要读取的文件的完整路径 读取目标 .txt 文本文件

在这里插入图片描述

1.5.3 使用 with 语句来读取文件(新型语法)

上面的方式使文件对象一直处于打开状态,直到使用 close 函数明确地关闭或直到脚本结束。
尽管这种做法一般没有问题,但不够清晰,还被证明在更复杂的脚本中会导致错误。
从 Python 2.5 开始,可以使用 with 语句来创建文件对象。这种语法在 with 语句结束时会自动关闭文件对象。

import sys 

# 读取文件

# 读取单个文件
input_file_name = sys.argv[0]    # 获取要执行的脚本文件名称
print("要执行的脚本文件名称:" + input_file_name)         # 打印要执行的脚本文件名称

input_file = sys.argv[1]  # 获取要读取的文本文件路径
print("要读取的文本文件路径: " + input_file)      #打印要读取的文本文件路径

# 使用 with 语句来创建文件对象,该文件对象中包括:
# 以r模式(只读模式)打开 获取到的文件路径input_file指向的文件 中的各个行。
# 并使用as短语,将该文件对象赋值给变量filereader,以便引用
with open(input_file, 'r', newline = '') as filereader:
    print("读取到的文本文件对象filereader的类型:" + str(type(filereader)))   # <class '_io.TextIOWrapper'>
    print("\n\n读取到的文本文件对象filereader的详细内容:")
    print(filereader)   # 打印文件对象filereader的详细内容(即文件路径input_file指向文件中的各个行)
    print("\n\nOutput #144: ")
    
    for row in filereader:
        print("{}".format(row.strip()))  # 去掉每一行两端的空字符,并将其打印出来

# 在 with 语句结束时会自动关闭文件,因此不需调用close函数来关闭filereader对象
# 即关闭以r模式打开的 文件路径input_file指向的文件 中的各个行   

在这里插入图片描述

open()函数用法:打开file 并返回相应的 file 对象。
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

其中的 newline 形参
(1)None:默认值,会将所有的换行符替换为系统默认的换行符;
不同操作系统换行符不统一,linux:\n ; windows:\r\n ; mac:\r
【 windows中,\r表示return,是回车,使光标移到行首;\n 是换行,使光标下移一格。】
(2)” :不会对换行符进行替换;
(3)‘\n’、‘\r’ 和 ‘\r\n’ :则表示会将换行符替换为指定的字符串。

去掉打印行中的strip() 方法,将 newline 分别改为 None,‘’ , \n , \r , \r\n,均得到以下输出:
在这里插入图片描述

1.6 使用 glob 读取多个文本文件

python中字符串拼接join —— 灞波儿渀

python中的glob模块函数:glob,iglob和escape的使用 ——Destinesia12

(1)os.path.join(path, paths),就是字符串的拼接,在windows操作系统中:
当第二个参数
paths(即所描述的模式*.txt )开头没有 \ \ 时: 【 也可能是\ 】
当第一个参数 文件夹路径path(即inputPath)的结尾没有 \ \ 时,就在其后面添加一个\ \,然后与第二个参数字符串拼接起来。
当第一个参数 文件夹路径path(即inputPath)的结尾有\ \时,就直接与第二个参数字符串拼接起来,并返回一个字符串。

当第二个参数*paths(即所描述的模式 * .txt )开头有 \ \ 时:
省略第一个参数 文件夹路径path(即inputPath),直接返回第二个参数字符串。

在这里插入图片描述

如:path 为 D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file
*paths 为 ‘ * .txt’
则join函数的返回值为一个字符串:D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file*.txt

(2)glob.glob(pathname) 方法返回与 pathname (即join函数返回的字符串) 匹配后的完整路径名称列表。
即要在文件夹D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file中寻找以.txt 为后缀的文件 ,
每找到一个之后,就将 * 替换为 具体的文本文件名称,如 file_to_read
然后得到该文本文件的完整路径:D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file\file_to_read.txt,并将其作为列表中的一个元素。
依次将该文件夹中的所有.txt文件都读取完,然后返回一个 包含该文件夹中所有.txt文件完整路径的 列表。

(3)for循环中的临时占位符input_file读取列表中的每一个元素,即每一个文本文件的完整路径名称。
所以在open函数的第一个参数中,直接将临时占位符input_file作为了要读取的文本文件的路径。
文件对象 = open (文件路径名, ‘r / w’,newline = None / ‘’ / ‘\n’ / ‘\r’ / ‘\r\n’ )

import sys   # System-specific parameters and functions 系统特定的参数和功能
import glob  # Unix style pathname pattern expansion  Unix样式的路径名模式扩展
import os    # Miscellaneous operating system interfaces  其他操作系统接口

# 读取多个文本文件
input_file_name = sys.argv[0]    # 获取要执行的脚本文件名称
print("要执行的脚本文件名称:" + input_file_name)         # 打印要执行的脚本文件名称

inputPath = sys.argv[1]  # 获取要读取的文本文件夹路径
print("要读取的文本文件夹路径: " + inputPath)      #打印要读取的文本文件夹路径 D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file



allpath = os.path.join(inputPath, '*.txt')    # 就是字符串的拼接,返回值将path = inputPath 和 *paths = '*.txt' 拼接起来的字符串
print("\njoin函数返回的所有路径段串联的数据类型为:" + str(type(allpath)))     # <class 'str'>
print("join函数返回的所有路径段串联具体内容为:" + allpath)     # D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file\*.txt

allpath_list = glob.glob(allpath)        # 返回与 pathname (即join函数返回的字符串) 匹配后的完整路径名称列表。
print("\nglob函数返回的所有路径段是由 " + str(type(allpath_list)) + "存储的。")     # <class 'list'>
print("glob函数返回的列表中的所有元素为:")
for input_file in allpath_list:  
    print(input_file)
# ['D:\\百度网盘\\Python数据分析基础\\GUI-IDE-IDLE\\file\\another_file_to_read.txt', 'D:\\百度网盘\\Python数据分析基础\\GUI-IDE-IDLE\\file\\file_to_read.txt']



for input_file in glob.glob(os.path.join(inputPath, '*.txt')):
    print("\n\n获取到的文本文件完整路径名称为:" + input_file)
    with open(input_file, 'r', newline = '') as filereader:   # 按照提供的文本文件的完整路径,打开该文本文件
        for row in filereader:       #  获取文本文件中的每一行
            print("{}".format(row.strip()))  # 去掉两端的空白符后,打印每一行

脚本名称:first_script.py
脚本路径:D:\百度网盘\Python数据分析基础
要读取的文本文件夹名称:file
要读取的文本文件夹的完整路径:D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file

在这里插入图片描述

在命令窗口中依次输入:
d: ———— 切换到脚本文件所在的根目录
cd D:\百度网盘\Python数据分析基础 ———— 切换到脚本文件所在的目录/文件夹
python first_script.py D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file ——执行该文件夹中的脚本,并根据要读取的文件夹的完整路径 读取所有目标 .txt 文本文件

在这里插入图片描述

1.7 写入文本文件

Python File write() 方法

在这里插入图片描述

1.7.1 写入.txt文本文件

1.7.1.1 写入单个.txt文本文件

当没有提前创建 空的 要写入内容的 文本文件(但一定要创建其所在的上一级文件夹),且将输出文件放到与脚本不在同一位置的文件夹中时:
将会自动在目标文件夹中,创建一个指定名称的文本文件,同时写入内容。

如果使用可写方式(w模式)打开 已存在且不为空的文件对象,那么其之前的内容会被删除,只保留新写入的内容。

import sys

# 写入一个文本文件

my_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
number = len(my_letters)

output_file = sys.argv[1]  # 获取要写入内容的文件的完整路径
print("获取到的要写入内容的文件的完整路径为:" + output_file)  # 打印要写入内容的文件的完整路径

# 创建一个文件对象,该文件对象中包括:
# 以w模式(可写模式)打开 获取到的文件路径output_file指向的文件 中的各个行。
filewriter = open(output_file,'w')

for index_value in range(len(my_letters)):    # range函数生成从0 到len(my_letters) -1(也就是number -1)的索引表
    if index_value < (number - 1):     # 索引值只能取到number - 2
        filewriter.write(my_letters[index_value] + '\t')
    else:          # 当索引值index_value = number - 1,即到达最后一个元素时,后面追加一个换行符(这里的my_letters[index_value]已经是字符串,否则要强制转换为字符串)
        filewriter.write(my_letters[index_value] + '\n')
        
filewriter.close()
print("Output #146: Output writtern to file.")

此处:
脚本名称:first_script.py
脚本路径:D:\百度网盘\Python数据分析基础
要写入的文本文件名称:write_to_file.txt
要写入的文本文件夹的完整路径(一定要写到文件名称):D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file2\write_to_file.txt

cmd:
d:
cd D:\百度网盘\Python数据分析基础
python first_script.py D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file2\write_to_file.txt

在这里插入图片描述
在这里插入图片描述

1.7.1.2 写入多个.txt文本文件

Python创建新文件夹并在其中创建文件的方法,或者文件夹路径不存在时自动创建 —— 滚雪球~

1.7.2 追加到文件

1.7.2.1 追加到.txt文本文件

import sys

# 追加进.txt文本文件
         
my_numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
number = len(my_numbers)

output_file = sys.argv[1]  # 获取要追加内容的文件的完整路径
print("获取到的要追加内容的文件的完整路径为:" + output_file)  # 打印要追加内容的文件的完整路径

# 创建一个文件对象,该文件对象中包括:
# 以a模式(追加模式)打开 获取到的文件路径output_file指向的文件 中的各个行。
filewriter = open(output_file,'a')
       

for index_value in range(len(my_numbers)):    # range函数生成从0 到len(my_numbers) -1(也就是number -1)的索引表
    if index_value < (number - 1):     # 索引值只能取到number - 2
        filewriter.write(str(my_numbers[index_value]) + ',')
    else:          # 当索引值index_value = number - 1,即到达最后一个元素时,后面追加一个换行符
        filewriter.write(str(my_numbers[index_value]) + '\n')
        
filewriter.close()
print("Output #146: Output appended  to file.")

脚本名称:first_script.py
脚本路径:D:\百度网盘\Python数据分析基础
要追加的文本文件名称:write_to_file.txt(追加到上面的文本文件的后面)
要追加的文本文件的完整路径(一定要写到文件名称):D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file2\write_to_file.txt

cmd:
d:
cd D:\百度网盘\Python数据分析基础
python first_script.py D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file2\write_to_file.txt

在这里插入图片描述
在这里插入图片描述

追加相同内容多次后:
在这里插入图片描述

1.7.2.2 追加到.csv分隔符文件

当把 要追加的文本文件后缀 名称 改为 .csv时:write_to_file.csv
由于其所在的文件夹中没有该文件,那么就会新创建一个,再追加进相应的内容。

脚本名称:first_script.py(脚本内容不变)
【可以由此看出 .csv分隔符文件中,数据的具体格式。
即:以字符串型而非整形存储数据,且以逗号分隔每个字符串。
使用换行符\n切换到下一行数据。】

脚本路径:D:\百度网盘\Python数据分析基础
要追加的CSV分隔符文件名称:write_to_file.csv
要追加的CSV分隔符文件的完整路径(一定要写到文件名称):D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file2\write_to_file.csv

cmd:
d:
cd D:\百度网盘\Python数据分析基础
python first_script.py D:\百度网盘\Python数据分析基础\GUI-IDE-IDLE\file2\write_to_file.csv

在这里插入图片描述
在这里插入图片描述

追加相同内容多次后:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值