5 VBA 和python 打开文本文件的比较
5.1 VBA处理文件方法总结
5.1.1 文件处理方法1: 函数式编程
用dir() 读文件名,
用 open () for output as #1 取得文件
用print写入,或者用=input 读入
注意close
5.1.2 也有对象的方法 FSO
需要set 对象
其他流程类似
5.2 py处理文本文件的方法总结
处理流程和VBA差不多
处理逻辑差不多
file 一定是对象
使用 file=open() 打开文件
使用 file.write() 往文件内写入内容
5.3 比较 VBA 和 python 文件处理的相关代码差别
5.3.1 VBA的内嵌EXCEL天生优势 VS python的各种import模块
先撇开VBA的编辑器VBE内嵌在EXCEL里,处理EXCEL有近水楼台的效果,比较python和VBA处理一般文件,比如文本文件的差别。
python的方法,还是他各种各样的import的轮子,对比封闭的VBA,扩展性是无敌的
5.3.2 VBA里还有很多语句式的命令,python里基本都是函数了
VBA里有很多语句和函数并存,甚至语句为主,函数次之
比如 input() 和 input write 和 write()
历史原因
代码用的人少了
只是office占用还很高,否则VBA早没了
5.3.3 易用性的问题
VBA
吐槽:open path for mode as # 居然没有一个支持既可读又可写的模式。。。。不可想象,要想又读又写,只能分开!
python
兼容模式 python 可以用 open (path,r+) 等模式即可
file_names = os.listdir(r"C:\Users\Administrator\Desktop\ppp") 可以得到一个文件名的列表!直接就是列表,方便操作
lines=file.readlines() 可以直接返回一个列表!
5.3.4 简洁,方便来看
优势在于,py语言本身的简洁,毕竟是新语言
1
VBA里
a & "=" & b
python 里字符串连接用+
地址连接,可以用 os.path.join() ‘可以少写一个\? 文件夹和文件之间的?
join()
1-2 数组转字符串
arr = ['apple', 'banana', 'orange']
str1 = ', '.join(arr)
print(str1) # 输出: apple, banana, orange
arr = [1, 2, 3, 4, 5]
str1 = ', '.join([str(x) for x in arr])
print(str1) # 输出: 1, 2, 3, 4, 5
2 写入内容
handle.write('format string %d' % value)
python 里的 f.write 带变量的方式
打印多个内容
print a , "=" , b
print a & "=" & b
3
VBA
print 写入分行
chr(10) , ; 等
\n也可以?都是字符串 转义符?
python
错误 print ("" +\n)
正确 print ("" +"\n")
text_list = ['第一行文本', '第二行文本']
with open(file_name, 'w') as f:
f.write('\n'.join(text_list))
4
VBA
必须写遍历
只能打印其中的一个个元素
python 可以直接打印数组
print(arr)
5
py 分段处理
line = file.readline()
while line:
fields = line.split(',')
for field in fields:
# 处理每个字段的数据
print(field)
line = file.readline()
python 文件读取用逗号分隔符_mob649e815b5994的技术博客_51CTO博客
6
一、使用os模块
os模块是Python自带的一个与操作系统交互的模块,其中包含了一些用于文件操作的函数。通过os模块,我们可以遍历指定目录下的所有文件,然后逐个读取文件内容。
下面是一个使用os模块读取多个文件的示例代码:
```
import os
# 获取指定目录下的所有文件名
file_names = os.listdir('path/to/files')
# 遍历文件名列表,逐个读取文件内容
for file_name in file_names:
with open(os.path.join('path/to/files', file_name), 'r') as f:
content = f.read()
# 进行相应的处理
python循环读取多个文件(python循环读取文件夹之中的文件) - Python基础教程
python os库 批量读取文件_mob649e815adb02的技术博客_51CTO博客
import os
folder_path = '/path/to/folder' # 替换为你的文件夹路径
file_names = os.listdir(folder_path)
for file_name in file_names:
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path):
语法差异
VBA
for
next
for each in
next
for :
do while
loop
do while
do until
数组的差别
数组和枚举类型
index(list值)
字典的差别
虽然后加的也是对象
for key in dict.keys
for values in dict.values
for keys,items in dict.items
变量
py可以直接print,变量,数组,字典,等等都可以
vba 只能打印普通的变量
debug.print
print写入文件时,相当于write