コードの問題を強調します。これはあなたを助けるはずです。あなたが本当に何をしたいのかは明確ではありません。
import os,sys
path="O:\\103" # this should be r'O:\103'
dir=os.listdir(path)
for file in dir: # do not use file as a variable name as its a built-in
dir=os.path.join(path,file) # here you are overwriting the `dir` variable
print dir
os.system("dir /b "+dir+" > "+file+".txt")
with open('file','r') as f: # 'file' is a string, file is a variable
#f.readline()
text=f.read()
print text
f.close() # you don't need to close the file if you use a with statement.
with open('f','w') as yyy: # here you are trying to open the string 'f'
for xxx in yyy:
# this should be if not xxx.startswith('$'):
if all(not xxx.startswith(x) for x in ('$')):
p=xxx.split("_")[0]
print p
f.writelines(str(p)+"\n") # what is f here? This should be
# .write()
# writelines() takes a sequence
yyy.close() # again, no need to close
ディレクトリが/home/vivek/test
あり、その中にこれがある場合:
.
└── vivek
├── v1
│ ├── A.txt
│ ├── B.txt
│ └── C.txt
└── v2
├── D.txt
├── E.txt
└── F.txt
あなたの目標は、ファイル名を印刷することです(またはファイル名を開いてその内容を印刷する):
import os
root_path = '/home/vivek/test'
files = []
for parent,directory,file_list in os.walk(root_path):
if file_list:
for filename in file_list:
files.append(os.path.join(parent,filename))
これにより、次のようにファイルへのフルパスのリストが表示されます。
['/home/vivek/test/vivek/v2/E.txt',
'/home/vivek/test/vivek/v2/D.txt',
'/home/vivek/test/vivek/v2/F.txt',
'/home/vivek/test/vivek/v1/C.txt',
'/home/vivek/test/vivek/v1/B.txt',
'/home/vivek/test/vivek/v1/A.txt']
今、あなたは好きなことをすることができます:
for filename in files:
with open(filename) as f:
print f.readlines()