Re: [问题] 用file open抓TXT开的问题

楼主: doomleika (iSuck)   2016-05-02 03:08:41
※ 引述《QooEX (QooEX)》之铭言:
: 我有大量的TXT档案想用 file= open('xxx'.'r')
: 读取近来全部放到list内部排序
: 问题来了 前面xxx的部分 我是用抓内部资料夹全部的档名出来去设置
: 所以'' 以我目前的知识跟常识来说 是不可能放变量的
: 例如:我将档名抓出来 找个空间放 A=档名 但是不可能放进''内
: 所以我的解决想法是
: ccc=os.listdir('C:/new')[0]
os.listdir包含了资料夹,如果你的档案资料夹里面包含子资料夹的话可能会爆炸
(IsADirectoryError)
可以考虑使用os.walk[1]或是使用os.listdir[2]配合os.path.isfile验证
[1] https://docs.python.org/2/library/os.html#os.walk
[2] https://docs.python.org/2/library/os.path.html#os.path.isfile
: def new(str):
: return "%s%s%s" %('\'C:/new/',ccc,'\'')
你的问题出在字串的处理上:
Python用双引号或是单引号去表示字串,单双引号是写给Python看的,再加'(\')是告诉
Python你希望在字串表示单引号,所以假设你的ccc变量是"ccc"上面的程式结果会是
'C:/new/ccc'
^ ^
前后这单引号被当程档案的路径的一部分了,所以会出错
你应该写成:
def new(ccc):
return "%s%s" %("C:/new/",ccc)
字串连结能写得更简洁:
def new(ccc):
return "C:/new/" + ccc
关于档案路径Python有提供os.path.abspath跟os.path.join帮你处理,所以这段能写成
from os.path import join, abspath
def get_path(directory, file):
return abspath(join(directory, file))
: file1 = open(new(ccc),r)
: 上面去呼叫的
: 有print出来看 是正确的'位址 '
: 置换出 error前面出现显示的路径
: 直接替换 我上面new地方也是可以执行的
: 请问是哪里有错
: 或是有什么方式可以解决
综合前面的资讯,你可以写成
import os
from os.path import join, abspath
def get_path(directory, file):
return abspath(join(directory, file))
# Put your directory here
directory = "C:/path/to/your/directory"
directories = os.walk(directory)
text_list = []
for directory, _, files in directories:
for a_file in files:
file_path = get_path(directory, a_file)
with open(file_path, 'r') as f:
text_list.append(f.read())
这样跑完text_list应该就是你要的结果
作者: uranusjr (←這人是超級笨蛋)   2016-05-02 03:51:00
每次看到这种程式就要推一次 Python 3, 写起来简单多了
楼主: doomleika (iSuck)   2016-05-02 10:34:00
请问Python 3要怎么写 ._.?
作者: QooEX (QooEX)   2016-05-02 16:51:00
感谢愿意花这么多时间回文><真的超厉害 ~再推一次

Links booklink

Contact Us: admin [ a t ] ucptt.com