确保您了解以下三个返回值
os.walk:
for root, subdirs, files in os.walk(rootdir):
具有以下含义:
root
:“经过”的当前路径subdirs
:root
目录类型中的文件files
:目录以外的其他文件root
(不在中subdirs
)
并且请使用
os.path.join而不是用斜杠连接!您的问题是
filePath = rootdir + '/' +file-您必须串联当前的“移动”文件夹,而不是最顶层的文件夹。所以一定是
filePath = os.path.join(root,file)。顺便说一句,“文件”是内置的,因此通常不将其用作变量名。
另一个问题是您的循环,例如:
import osimport syswalk_dir = sys.argv[1]print('walk_dir = ' + walk_dir)# If your current working directory may change during script execution, it's recommended to# immediately convert program arguments to an absolute path. Then the variable root below will# be an absolute path as well. Example:# walk_dir = os.path.abspath(walk_dir)print('walk_dir (absolute) = ' + os.path.abspath(walk_dir))for root, subdirs, files in os.walk(walk_dir): print('--nroot = ' + root) list_file_path = os.path.join(root, 'my-directory-list.txt') print('list_file_path = ' + list_file_path) with open(list_file_path, 'wb') as list_file: for subdir in subdirs: print('t- subdirectory ' + subdir) for filename in files: file_path = os.path.join(root, filename) print('t- file %s (full path: %s)' % (filename, file_path)) with open(file_path, 'rb') as f: f_content = f.read() list_file.write(('The file %s contains:n' % filename).enpre('utf-8')) list_file.write(f_content) list_file.write(b'n')
如果您不知道,则
with文件声明是一种简写形式:
with open('filename', 'rb') as f: dosomething()# is effectively the same asf = open('filename', 'rb')try: dosomething()finally: f.close()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)