网站建设资讯

NEWS

网站建设资讯

python函数遍历 python字符串的遍历

如何利用Python遍历文件夹

1. 基本实现

成都创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站建设、程序开发、网站优化、微网站、成都小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的做网站、成都网站设计、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。

[root@localhost ~]# cat dirfile.py

import os

path='/tmp'for dirpath,dirnames,filenames in os.walk(path):    for file in filenames:

fullpath=os.path.join(dirpath,file)            print fullpath

执行结果如下:

[root@localhost ~]# python dirfile.py

/tmp/yum.log/tmp/pulse-3QSA3BbwpQ49/pid/tmp/pulse-3QSA3BbwpQ49/native/tmp/.esd-0/socket

2. 在上例的基础上传递参数

import os,sys

path=sys.argv[1]for dirpath,dirnames,filenames in os.walk(path):    for file in filenames:

fullpath=os.path.join(dirpath,file)            print fullpath

执行方式为:[root@localhost ~]# python dirfile.py /tmp

在这里,sys.argv[1]是接受参数,也可以定义sys.argv[2]接受第二个参数

3. 如何用函数实现

import os,sys

path='/tmp'def paths(path):

path_collection=[]        for dirpath,dirnames,filenames in os.walk(path):                for file in filenames:

fullpath=os.path.join(dirpath,file)

path_collection.append(fullpath)        return path_collectionfor file in paths(path):        print file

4. 如何封装成类

import os,sysclass diskwalk(object):        def __init__(self,path):

self.path = path        def paths(self):

path=self.path

path_collection=[]                for dirpath,dirnames,filenames in os.walk(path):                        for file in filenames:

fullpath=os.path.join(dirpath,file)

path_collection.append(fullpath)                return path_collectionif __name__ == '__main__':        for file in diskwalk(sys.argv[1]).paths():                print file

PS:

1 def __init__():函数,也叫初始化函数。

self.path = path可以理解为初始化定义了1个变量。 在后面的def里面调用的时候必须要使用self.path而不能使用path

2 __name__ == '__main__'

模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这种情况下, __name__ 的值将是一个特别缺省"__main__"。上述类中加上__name__ == '__main__'的判断语句,可以直接在终端环境下执行python dirfile.py /tmp进行测试,不必非得在交互式环境下导入模块进行测试。

python生成器多次遍历(一)------复制生成器

当python中的生成器被完整遍历一次后,就无法再次遍历。

我们希望享有生成器迭代占用内存小的特性,又希望这个生成器能被遍历多次。

方案之一是使用函数 itertools.tee 来复制生成器

语法: generator1, generator2 = itertools.tee(generator, n=2)

generator是需要复制的生成器, n是复制出生成器个数,默认为2。

我们为了生成器能多次遍历,可以这样写:

generator, copy_generator = itertools.tee(generator, 2)

然后遍历copy_generator,保存的generator可以再次复制。

1、generator被复制后尽量不要使用

2、如果生成器中迭代的还是生成器,复制最外层生成器,生成器依然只能遍历一次。

下一篇

python生成器多次遍历(二)------创建生成器类

python中列表的遍历

没有优雅的方法解决,只有不要使用print语句,如楼上所说,或者使用python3.X中的print函数(通过

from __future__ import print_function使能print函数形式)

其实,在python2.X手册中对print语句描述说:(python2.7.2官方帮助文档)

一个空格会被自动打印在每个对象前,

除非:(1)还没有输出写到标准输出中

(2)当最后一个写到标准输出的是一个除了空格‘ ’的空白字符

(3)当最后写到标准输出的不是一个print语句。

所以在apple、banana等每个字符前都有一个空格。(apple的a前也有空格呢!)

一个好的解决办法是使用python3.X中的print函数。

通过在文件前面加上:

from __future__ import print_function

就可以使用print的函数形式了。

print函数的语法:

print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout])

默认下,若没有指定sep,则使用空格。没指定end,则使用换行符。没指定输出文件则输出到标准输出。

例如:print('hello','world',sep='-',end='#')输出:

hello-world#

所以,你的程序可改为:

from __future__ import print_function

list = ["apple", "banana", "grape", "orange"]

for x in range(len(list)):

print('list[%d]:'%x,end='')

for y in range(len(list[x])):

print(list[x][y],sep='',end='')

print('')

至于: 'list[%d]:'%x 这里的百分号,是一个对字符串的操作符。百分号使得百分号前面的字符串中

的%d被百分号后的x的值替换掉。

python如何遍历类的por属性

python分2个步骤遍历类的por属性。

1、property方法接收两个参数,第一个参数为获取属性需要调用的实例方法名。

2、第二个参数为设置属性需要调用的实例方法名,返回值就设置为需要设置、获取的属性名。

python3中,定义一个函数,遍历字符串,使用print后调用函数会有None,换成return结果又不对?

第一个图中,在执行 print(bianli__str('sjsjsj'))这句时,首先执行print括号中的内容,即进入bianli__str函数,执行了函数中的print语句,打印的内容是字符串的每一个字符,然后退出函数,执行print这个操作,print的内容是你定义的函数,这个函数本身是没有值的,所以是None

解决的方法就是调用函数的时候不用再print了,如下图:

第二个图中结果不对是因为return就会退出函数,所以打完第一个字符后就退出了

如何用python遍历文件夹下的所有excel文件

大数据处理经常要用到一堆表格,然后需要把数据导入一个list中进行各种算法分析,简单讲一下自己的做法:

1.如何读取excel文件

网上的版本很多,在xlrd模块基础上,找到一些源码:

[python] view plain copy

import  xdrlib ,sys

import xlrd

def open_excel(file="C:/Users/flyminer/Desktop/新建 Microsoft Excel 工作表.xlsx"):

data = xlrd.open_workbook(file)

return data

#根据索引获取Excel表格中的数据   参数:file:Excel文件路径     colnameindex:表头列名所在行的所以  ,by_index:表的索引

def excel_table_byindex(file="C:/Users/flyminer/Desktop/新建 Microsoft Excel 工作表.xlsx",colnameindex=0,by_index=0):

data = open_excel(file)

table = data.sheets()[by_index]

nrows = table.nrows #行数

ncols = table.ncols #列数

colnames =  table.row_values(colnameindex) #某一行数据

list =[]

for rownum in range(1,nrows):

row = table.row_values(rownum)

if row:

app = {}

for i in range(len(colnames)):

app[colnames[i]] = row[i]

list.append(app)

return list

#根据名称获取Excel表格中的数据   参数:file:Excel文件路径     colnameindex:表头列名所在行的所以  ,by_name:Sheet1名称

def excel_table_byname(file="C:/Users/flyminer/Desktop/新建 Microsoft Excel 工作表.xlsx",colnameindex=0,by_name=u'Sheet1'):

data = open_excel(file)

table = data.sheet_by_name(by_name)

nrows = table.nrows #行数

colnames =  table.row_values(colnameindex) #某一行数据

list =[]

for rownum in range(1,nrows):

row = table.row_values(rownum)

if row:

app = {}

for i in range(len(colnames)):

app[colnames[i]] = row[i]

list.append(app)

return list

def main():

tables = excel_table_byindex()

for row in tables:

print(row)

tables = excel_table_byname()

for row in tables:

print(row)

if __name__=="__main__":

main()

最后一句是重点,所以这里也给代码人点个赞!

最后一句让代码里的函数都可以被复用,简单地说:假设文件名是a,在程序中import a以后,就可以用a.excel_table_byname()和a.excel_table_byindex()这两个超级好用的函数了。

2.然后是遍历文件夹取得excel文件以及路径:,原创代码如下:

[python] view plain copy

import os

import xlrd

import test_wy

xpath="E:/唐伟捷/电力/电力系统总文件夹/舟山电力"

xtype="xlsx"

typedata = []

name = []

raw_data=[]

file_path=[]

def collect_xls(list_collect,type1):

#取得列表中所有的type文件

for each_element in list_collect:

if isinstance(each_element,list):

collect_xls(each_element,type1)

elif each_element.endswith(type1):

typedata.insert(0,each_element)

return typedata

#读取所有文件夹中的xls文件

def read_xls(path,type2):

#遍历路径文件夹

for file in os.walk(path):

for each_list in file[2]:

file_path=file[0]+"/"+each_list

#os.walk()函数返回三个参数:路径,子文件夹,路径下的文件,利用字符串拼接file[0]和file[2]得到文件的路径

name.insert(0,file_path)

all_xls = collect_xls(name, type2)

#遍历所有type文件路径并读取数据

for evey_name in all_xls:

xls_data = xlrd.open_workbook(evey_name)

for each_sheet in xls_data.sheets():

sheet_data=test_wy.excel_table_byname(evey_name,0,each_sheet.name)

#请参考读取excel文件的代码

raw_data.insert(0, sheet_data)

print(each_sheet.name,":Data has been done.")

return raw_data

a=read_xls(xpath,xtype)

print("Victory")

欢迎各种不一样的想法~~


当前名称:python函数遍历 python字符串的遍历
网页地址:http://njwzjz.com/article/dodjhei.html