Py循环,打开文件(读、写、执行)

这篇博客介绍了Python中的两种循环方式:while和for循环,并通过实例演示了其用法。接着讲解了文件操作,特别是txt文件的读、写、执行模式,包括各自的特点。最后提到了列表生成器和冒泡排序的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循环:
循环有两种写法,每一种都有不同的用法,在不同的场景中用不同的循环
第一种:while 循环

while True:
    print ("我是死循环")#这是一个死循环
 a = 0
 while a<10:
    print ('我要打印10遍')
    a = a + 1#这是一个常规的循环写法,就是一定,要有结束的标准,有结束的条件,要不循环就成了死循环

举个栗子:
从1加到100的和

def func(a,b):
    sum = 0
    while a<=b:
        sum += a
        a += 1
    return sum
print (func(1,100))#把这个封装成函数,然后不仅可以算1到100的和,还可以算任意数值到任意数值的和

第二中循环方式:for 循环,这种循环更多用法是遍历

a = '我的元素要一个一个蹦出来'
for m in a :
    print (m)#意思是把每个元素循环拿出来

for循环更多的用处是遍历有下标类型的元素,比如:字符串、列表、元组、集合等,当然一些算法也会用
还是看例子:打印九九乘法表

for i in range(1,10):
    for j in range (1,i+1):
        print ('%d*%d=%d'%(j,i,i*j),end = '  ')
    print (end = '\n')

循环中还有两个关键字:continue,break

for a in range (10):
    if a == 1:
        print ('我是1,但是我还会继续循环')
        continue
        print ('我是打印不出来的')
    elif a == 5:
        print ('我是5我要结束循环')
        break
        print ('我是打印不出来的')
    print(a)
#这个是打印的结果,contiunue会结束本次循环然后进行下一次循环,所以数字1没有打印出来,直接打印2;break直接终结循环,所以5没有打印出,后面的循环也结束了
0
我是1,但是我还会继续循环
2
3
4
我是5我要结束循环

循环暂时就到这里,下面说下文件的读写操作,主要是txt格式的文件,其他word /excel暂时先不说
file_object = open(file_name,access_mode = ‘r’)
file_name 是文件的路径,可以是相对路径和绝对路径 access_mode:是文件的模式,包括r(读)、w(写)、a(执行)、r+/w+/a+都是读写模式,但是个各自的特性保持一致,这个下面会有详细介绍
读模式中如果在该路径没有找到该文件,则会提示错误(r+也是这个特性)

fileDir = 'D:\\file.txt'
fo = open(fileDir,'r')

print (fo.tell())#这个是打印当前光标所在的位置下标,刚打开为0

print (fo.read(50))#这个打印的是前50个字符,如果不写,默认打印全部的内容

print (fo.tell())#打印当前光标位置此时贯标位置在51

print ('光标的位置是:',fo.seek(10,0))#移动光标,不管光标的位置在哪,此时光标的位置都是1,1代表了光标从零开始移动了一个字符
#后面的0 意思就是0模式,一般不写

print (fo.tell())#此时打印结果是10

print (fo.read(50))#光标移动了50位

print (fo.tell())#此时打印结果是61,原因是前面光标移动了10位

print ('光标的位置是:',fo.seek(10,0))

print (fo.tell())#此时打印结果还是10

print (fo.readline())#读取文本文档第一行,返回Str

print (fo.readline())#这一行和上一行之间有空行,原因是换行符占了一行

print (fo.readlines())#读取文本文档所有行,返回列表,以行为元素

print (fo.read().splitlines())#读取所有行,去掉换行符

#贯标移动的方式还有1模式和2模式,主要是针对二进制的
fo = open(fileDir,'rb')#rb模式为二进制的读模式

print (fo.read(50))

fo.seek(2,1)#从光标当前位置移动了2位,正数向前,负数向后移动

print (fo.tell())#此时光标位置为52

fo.seek(2,2)#从尾部开始光标向后先前移动了2位,负数向后

print (fo.tell())#此时光标位置为190,该文本文档一共188个字符

fo.close()#关闭该文件,此时无法对该文件进行操作了

print (fo.read(50))#这时候会报错

写模式中如果在该路径没有找到该文件,则会在该文件下新建该文件夹,不过每次在写入之前程序都会把原本的文本文档内容清空,重新写入(w+也是此种特性)

fileDir = 'D:\\file3.txt'
fo = open(fileDir,'w')

#print (fo.write(['1\n','asdff']))#不能写入列表,只能写入字符串

fo.seek(5)

fo.write('我是第一行\n我是第二行\n')#从第六位开始写此时没有保存文字只是在缓冲区,只能写入字符串

fo.flush()#写入磁盘,保存文件

fo.close()#关闭文件,同时也有保存的功能

执行模式中如果文件不存在,则新建文件,文件如果存在则追加写,在文件的最后一行开始追加(a+也有此特性)

fileDir = 'D:\\file3.txt'
fo = open(fileDir,'a')
fo.write('我是第二行\n我是第三行\n')
fo.flush()#写入磁盘,保存文件

好了这个差不多就是我知道的了,暂时先这样,还有一种文件的操作方法我写下

fileDir = 'D:\\file3.txt'
fileDir1 = 'D:\\file4.txt'
#这种方法可以同时操作多个文件进行读写,意思是把open (fileDir,'w')赋值给a,open(fileDir1,'a')赋值给b
with open (fileDir,'w') as a ,open(fileDir1,'a') as b :
    a.write('sdaf')
    b.write('424234')
    a.flush()
    b.flush()
    a.close()
    b.close()

再说一下列表生成器

before = [12000,5000,90000,1000]
after = [int(one*0.9)for one in before ]#后面可以加if 判断 例如:加if one >5000,此时结果是[10800, 81000]
print (after)
#打印结果是[10800, 4500, 81000, 900]

冒泡排序说一下
冒泡是从开始的下标开始两两对比,如果前面的比后面的大那么把,前面的移后一位,直到第一轮比完,得出最后一位的数字最大,然后再次从头来过,得到倒数第二位的最大数字,一直循环直至结束,下面是代码,了解一下,就是第一轮要比len(alist)-1次,第二轮要比len(alist)-2次,直至结束

alist = [12,32,56,2,1,43,6]
for i in range(len(alist)-1):
    for j in range(len(alist)-1-i):
        if alist[j] >alist[j+1]:
            alist[j],alist[j+1] = alist[j+1],alist[j]
        else:
            pass
print (alist)
### 如何使用 Python 打开特定文件夹中的 `.py` 文件 为了实现这一目标,可以通过 `os` 和 `subprocess` 模块来完成操作。以下是具体说明: #### 使用 `os` 列出目录并筛选 `.py` 文件 可以利用 `os.listdir()` 方法获取指定路径下的所有文件名,并通过字符串匹配过滤出扩展名为 `.py` 的文件[^1]。 ```python import os def list_py_files(directory): py_files = [f for f in os.listdir(directory) if f.endswith('.py')] return py_files ``` 上述代码定义了一个函数 `list_py_files`,它接收一个参数 `directory` 表示目标文件夹路径,返回该文件夹下所有的 `.py` 文件列表。 #### 使用 `subprocess` 运行 `.py` 文件 如果需要运行这些 `.py` 文件,则可借助 `subprocess.run()` 来调用 Python 解释器执行它们[^3]。 ```python import subprocess def run_py_file(file_path): result = subprocess.run(['python', file_path], capture_output=True, text=True) print(f"STDOUT:\n{result.stdout}") print(f"STDERR:\n{result.stderr}") ``` 此部分展示了如何创建另一个辅助函数 `run_py_file`,用于接受单个 `.py` 文件的绝对路径作为输入,并尝试运行这个脚本。这里还捕获了标准输出和错误流以便后续处理或调试之需。 #### 合以上功能遍历整个文件夹内的 `.py` 脚本 最后一步就是把前面两步结合起来形成最终解决方案——即不仅能够找到所有符合条件的目标文件还能逐一启动其执行过程。 ```python if __name__ == "__main__": folder_to_scan = './example_folder' # 替换为你想要扫描的具体位置 all_pys = list_py_files(folder_to_scan) for script in all_pys: full_script_path = os.path.join(folder_to_scan, script) print(f"\nRunning {script}...") run_py_file(full_script_path) ``` 这段主程序逻辑首先指定了待检索的根目录(记得修改成实际存在的地方),接着调用了之前编的两个核心件分别负责发现可用资源以及激活对应行为;每次循环都会打印当前正在处理的是哪一个项目从而让用户清楚进度状况。 --- ### 注意事项 - 需确认环境中已正确定义好 PATH 变量使得单纯键入 'python' 即能触发关联动作。 - 如果跨平台部署考虑兼容性问题可能还需要额外调整命令串比如针对 Windows 系统改为 ['py','-u'] 形式等等细节差异之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhaoXuWen23

你的鼓励是我的动力,持续更新中

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值