-2
FOLDER1
  FOLDER2
     FOLDER3
     $$FOLDER4

FOLDER3出力が。として印刷されるのと同じように必要ですFOLDER3.txt。これが私のコードです。書き込みモードでフォルダを繰り返したいです。

import os,sys
path="O:\\103"
dir=os.listdir(path)
for file in dir:
dir=os.path.join(path,file)
print dir
os.system("dir /b "+dir+" > "+file+".txt")
with open('file','r') as f:
#f.readline()
   text=f.read()
   print text
   f.close()
   with open('f','w') as yyy:
   for xxx in yyy:
   if all(not xxx.startswith(x) for x in ('$')):
    p=xxx.split("_")[0]
    print p
    f.writelines(str(p)+"\n")
yyy.close()
4

1 に答える 1

1

コードの問題を強調します。これはあなたを助けるはずです。あなたが本当に何をしたいのかは明確ではありません。

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()
于 2012-10-03T04:27:48.290 に答える