❶ 读取python遍历中文目录得到的文件路径报错
这是因为路径里面包含中文的原因:
linux的系统字符编码默认为utf-8,而要搜索的文件路径nameFile是Unicode,需要进行解码成unicode,因此作如下修改:
fout=codecs.open(nameFile.encode("utf-8"),"w","utf-8"
当然,另外一种方法就是修改为英文的路径;
关于编码和解码的知识,请参考:http://www.cnblogs.com/qiernonstop/p/3634462.html
❷ 如何使用python flask遍历一个路径中的所有文件
这个是ftp模块的#fullname=ftp.dir() #显示目录下文件信息#print fullname ftp.cwd('/temp/data/') # 设置FTP路径 list = ftp.nlst() # 获得目录列表 for listtile in listprint listtile #遍历打印这是本地的import osimport os.pathrootdir = “:\data” # 指明被遍历的文件夹for parent,dirnames,filenames in os.walk(rootdir):#三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for dirname in dirnames: #输出文件夹信息 print "parent is:" + parent print "dirname is" + dirname for filename in filenames: #输出文件信息 print "parent is": + parent print "filename is:" + filename print "the full name of the file is:" + os.path.join(parent,filename) #输出文件路径信息#windows下为:d:\data\query_text\EL_00154
❸ python怎么得到文件所在路径
python获取文件所在目录的方法,具体步骤如下:相关推荐:《Python入门教程》第一步,通过import os导入os模块。第二步,模拟一个文件路径,并赋值给变量filepath。第三步:获取文件所在目录,使用os.path.dirname()。在交互模式中,按回车键进行执行,即可得到文件所在目录。
❹ python中如何根据文件名找他的路径。现在我遍历到了想要的文件,但是操作的时候需要根据路径提取。
遍历用os.walk:
importosfromos.pathimportjoin,getsizeforroot,dirs,filesinos.walk('python/Lib/email'):printroot,"consumes",printsum(getsize(join(root,name))fornameinfiles),print"bytesin",len(files),"non-directoryfiles"if'CVS'indirs:dirs.remove('CVS')#don'tvisitCVSdirectories
❺ 如何利用Python遍历文件夹
import osimport os.pathrootdir = “d:\data” # 指明被遍历的文件夹for parent,dirnames,filenames in os.walk(rootdir): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字for dirname in dirnames: #输出文件夹信息print "parent is:" + parentprint "dirname is" + dirnamefor filename in filenames: #输出文件信息print "parent is": + parentprint "filename is:" + filenameprint "the full name of the file is:" + os.path.join(parent,filename) #输出文件路径信息#windows下为:d:\data\query_text\EL_00154
❻ python文件名获取文件路径
概述
使用os.path.abspath()函数来获取文件绝对路径
解析
文件目录结构如下:
os.path.abspath(path)返回path规范化的绝对路径(但这个路径不一定是真实的路径),如果path仅是一个文件名,使用该函数后返回的路径是当前工作目录路径连接改文件名后所组成的新的路径名。
>>> import os.path
>>> os.path.abspath("a.py")
'C:\Users\Administrator\a.py'
os.path.split(path)将path分割成目录和文件名二元组返回
>>> os.path.split("C:\Users\Administrator\a.py")('C:\Users\Administrator', 'a.py')
os.path.dirname(path)返回path的目录,其实就是os.path.split(path)的第一个元素
>>> os.path.dirname("C:\Users\Administrator\a.py")'C:\Users\Administrator'
os.path.basename(path)返回path最后的文件名。如果path以/或结尾,就会返回空值。即os.path.split(path)的第二个元素。
>>> os.path.basename("C:\Users\Administrator\a.py")
'a.py'
os.path.commonprefix(list)返回list中所有path共有的最长的路径,从左向右,相同字符。
os.path.exists(path)如果path存在,返回True;如果path不存在,返回False。
os.path.isabs(path)如果path是绝对路径,返回True。
os.path.normpath(path)规范path字符串形式(规范文件路径)
os.path.isfile(path)判断路径是否为文件,是返回True,否则返回False
os.path.isdir(path)如果path是一个存在的目录,返回True,否则返货False。
os.path.islink(path)是否是链接;但如果系统不支持链接,则返回False。
❼ Python中如何遍历指定目录下的所有文件
例如:在C:\TDDOWNLOAD目录下有a.txt、b.txt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt两个文件。1.os.walkos.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。>>>importos>>>deffun(path):…forroot,dirs,filesinos.walk(path):…forfninfiles:…printroot,fn…>>>fun(r'C:\TDDOWNLOAD')C:\TDDOWNLOADa.txtC:\TDDOWNLOADb.txtC:\TDDOWNLOAD\sub1c.txtC:\TDDOWNLOAD\sub1d.txt>>>2.glob.globglob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理:>>>deffun(path):…forfninglob.glob(path+os.sep+'*'):#'*'代表匹配所有文件…ifos.path.isdir(fn):#如果结果为文件夹…fun(fn)#递归…else:…printfn…>>>fun(r'C:\TDDOWNLOAD')C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt>>>'*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。
❽ python怎么用递归遍历多层目录树
Python实现递归遍历指定文件目录(startdir),从而找到所有与指定的文件或目录(target)名相同的文件或目录的绝对路径。scandir.py :#! /usr/bin/python# filename : scandir.py# author : Jesse# update : 2011/08/15 10:16import osdef scandir(startdir, target) : os.chdir(startdir) for obj in os.listdir(os.curdir) : if obj == target : print os.getcwd() + os.sep + obj if os.path.isdir(obj) : scandir(obj, target) os.chdir(os.pardir) #!!!startdir = raw_input('Please input startdir: ')target = raw_input('Please input target: ')scandir(startdir, target)关于该程序的一点说明:1. 函数scandir的形参target可以是目录名也可以是文件名。2. 函数chdir的作用是切换到指定目录,该参数必须是有效的且有访问权限的相对路径或绝对路径。3. 函数的第五行,使用getcwd函数也是为了取得当前绝对路径。4. 加号作为字符串的连接符。os.sep根据你的操作系统给出目录分隔符,在GNU/Linux和UNIX上它的返回值是'/',在windows上它的返回值是'\\',在Mac OS上是‘:’,使用os.sep而不直接使用字符,会提高程序的可移植性。5. 递归调用后,一定不能忘了os.chdir(os.pardir),返回上层目录(即父目录)。重要:1. 理解for中的两个并列的if语句,并列是为了解决目标是文件夹时,该目标文件夹中包含符合要求的文件夹。2. 如果指定目录中存在访问受限的文件或文件夹,该程序会失败,返回无权访问信息。http://blog.chinaunix.net/uid-26137687-id-2183259.html
❾ 如何用python查询文件路劲
最近在用Python脚本处理文件夹下面的文件名的搜索和重命名。其中碰到如何递归遍历文件夹下面所有的文件,找到需要的文件,并且重命名的问题。其实如果看看Python的document,还是比较简单的,这里直接给出使用方法,免得大家还要花精力去查找。环境: 文件夹结构: —-path1 —-path1-1 —-path1-1.1.txt —-path1-2 —-path1.1.txt —-path2 —-recursiveDir.py文件夹结构如上所示。代码分析(recursiveDir.py):[python] view plain<span style="font-size:18px;">import os ''''' 本脚本用来演示如何遍历py脚本所在文件夹下面所有的文件(包括子文件夹以及其中包含的文件)。 重点演示如何获取每个文件的绝对路径。注意os.path.join(dirpath, filename)的用法。 ''' rootdir = os.getcwd() print('rootdir = ' + rootdir) for (dirpath, dirnames, filenames) in os.walk(rootdir): #print('dirpath = ' + dirpath) for dirname in dirnames: print('dirname = ' + dirname) for filename in filenames: #下面的打印结果类似为:D:\pythonDirDemo\path1\path1-1\path1-1.1.txt print(os.path.join(dirpath, filename)) if(filename=='path1-1.1.txt'): os.chdir(dirpath) #os.rename(os.path.join(dirpath, filename), dirpath + os.sep + 'path1-1.1.new.txt') os.rename('path1-1.1.txt', 'path1-1.1.new.txt') #os.remove(os.path.join(dirpath, filename)) #下面的输出为fileName = path1-1.1.txt,并未包含绝对路径,所以需要使用os.path.join来链接,获取绝对路径 print('fileName = ' + filename) print('——————one circle end——————-')</span> 所以可以看到程序中使用os.path.join(dirpath, filename)来拼接出绝对路径出来。注意下面的重命名用法,可以将工作目录切换到os.chdir(dirpath),这样就可以直接用os.rename(oldfile, newfile).Python会自动到dirpath下面查找oldfile并且重命名为newfile。注意工作目录的含义:在Python的GUI中,使用os.getcwd()可以获取到当前工作目录。测试如下:[html] view plain<span style="font-size:18px;">>>> os.chdir('D:') >>> os.getcwd() 'D:\\pythonDirDemo\\path1\\path1-1' >>> os.chdir('D:\\') >>> os.getcwd() 'D:\\'</span> 可见却是可以用chdir改变工作目录。这个代码只是在重命名的时候用到的小技巧而已,大家知道有这个东西就行了,不过调用chdir之后,后续再获取getcwd()就会被影响,所以警惕。
❿ 如何用python遍历文件夹下的所有excel文件
大数据处理经常要用到一堆表格,然后需要把数据导入一个list中进行各种算法分析,简单讲一下自己的做法:
1.如何读取excel文件
网上的版本很多,在xlrd模块基础上,找到一些源码:
[python]view plain
importxdrlib,sys
importxlrd
defopen_excel(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.xlsx"):
data=xlrd.open_workbook(file)
returndata
#根据索引获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_index:表的索引
defexcel_table_byindex(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.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=[]
forrownuminrange(1,nrows):
row=table.row_values(rownum)
ifrow:
app={}
foriinrange(len(colnames)):
app[colnames[i]]=row[i]
list.append(app)
returnlist
#根据名称获取Excel表格中的数据参数:file:Excel文件路径colnameindex:表头列名所在行的所以,by_name:Sheet1名称
defexcel_table_byname(file="C:/Users/flyminer/Desktop/新建MicrosoftExcel工作表.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=[]
forrownuminrange(1,nrows):
row=table.row_values(rownum)
ifrow:
app={}
foriinrange(len(colnames)):
app[colnames[i]]=row[i]
list.append(app)
returnlist
defmain():
tables=excel_table_byindex()
forrowintables:
print(row)
tables=excel_table_byname()
forrowintables:
print(row)
if__name__=="__main__":
main()
最后一句是重点,所以这里也给代码人点个赞!
最后一句让代码里的函数都可以被复用,简单地说:假设文件名是a,在程序中import a以后,就可以用a.excel_table_byname()和a.excel_table_byindex()这两个超级好用的函数了。
2.然后是遍历文件夹取得excel文件以及路径:,原创代码如下:
[python]view plain
importos
importxlrd
importtest_wy
xpath="E:/唐伟捷/电力/电力系统总文件夹/舟山电力"
xtype="xlsx"
typedata=[]
name=[]
raw_data=[]
file_path=[]
defcollect_xls(list_collect,type1):
#取得列表中所有的type文件
foreach_elementinlist_collect:
ifisinstance(each_element,list):
collect_xls(each_element,type1)
elifeach_element.endswith(type1):
typedata.insert(0,each_element)
returntypedata
#读取所有文件夹中的xls文件
defread_xls(path,type2):
#遍历路径文件夹
forfileinos.walk(path):
foreach_listinfile[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文件路径并读取数据
forevey_nameinall_xls:
xls_data=xlrd.open_workbook(evey_name)
foreach_sheetinxls_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,":Datahasbeendone.")
returnraw_data
a=read_xls(xpath,xtype)
print("Victory")
欢迎各种不一样的想法~~
未经允许不得转载:山九号 » python遍历文件路径|python文件名获取文件路径