2014-12-22 68 views
-1

这是我的第一个python项目之一,我试图编写一个脚本来编写一个可以重新创建src /目录的脚本。这将是我分发给用户的。它使用walk,并写入一个首先创建所有目录的python文件,然后写入这些文件。我遇到的问题是将这些文件制作成可以写入文件的单个字符串。试图在一个字符串中存储一个文件python

这档节目,我有:

import os 
import pickle 

src = os.path.dirname(os.path.realpath(__file__)) + os.sep + 'src' 
fPack = 'import os \nimport pickle \nmyDir = os.path.dirname(os.path.realpath(__file__))' 
Pack ='' 
print 'Packing ' + src 
pickle 
for root, dirs, files in os.walk(src, topdown=True): 
    for name in files: 
     print os.path.join(root, name) 
     f = open(os.path.join(root, name), 'r') 
     Pack = Pack + '\nf = open(os.path.join(myDir,\'' + name + '\'), \'w\')' 
     fileCont = pickle.dumps(f.read()) 
     Pack = Pack + '\nf.write(pickle.loads(\'' + fileCont + '\'))' 
    for name in dirs: 
     print os.path.join(root, name) 
     fPack = fPack + '\nos.makedirs(os.path.join(myDir,\'' + name + '\'))' 

print '==================================================\n\n\n' 
print fPack + Pack 
f = open(os.getcwd() + os.sep + 'dist' + os.sep + 'Pack.py', 'w') 
f.write(fPack) 
f.write(Pack) 

如果我在一个目录与子目录运行它,并在它里面的文件创建此文件

import os 
import pickle 
myDir = os.path.dirname(os.path.realpath(__file__)) 
os.makedirs(os.path.join(myDir,'SphereText')) 
f = open(os.path.join(myDir,'TextMain.py'), 'w') 
f.write(pickle.loads('S"########################################################\n#Main SphereText file.         #\n#SpereText is a simple Notepad-Like plain text editor #\n########################################################\n\nfrom Tkinter import *\nfrom tkFileDialog import *\nimport tkSimpleDialog\n\nroot = Tk()\nroot.title('SphereText')\n\ndef fSave():\n fileName = asksaveasfilename(parent=root)\n f = open(fileName, 'w')\n f.write(text.get(1.0,END))\n\ndef fOpen():\n fileName = ''\n fileName = askopenfilename(parent=root)\n f = open(fileName, 'r')\n text.delete(1.0,END)\n text.insert(1.0, f.read())\n\ndef tReplace():\n  Old = tkSimpleDialog.askstring('SphereText', 'Replace:')\n  print Old\n  New = tkSimpleDialog.askstring('SphereText', 'With:')\n  print New\n  content = text.get(1.0,END)\n  content = content.replace(Old, New)\n  text.delete(1.0,END)\n  text.insert(1.0, content)\n \nmenubar = Menu(root)\nmenubar.add_command(label='Save', command=fSave)\nmenubar.add_command(label='Open', command=fOpen)\nmenubar.add_command(label='Replace', command=tReplace)\nroot.config(menu=menubar)\n\ntext = Text(root, wrap=WORD)\n\ntext.pack()\n\nroot.mainloop()\n" 
p0 
.')) 

的的AREN“没有逃脱,最后有两个换行符。我认为序列化的要点是你总是可以以相同的方式读取它。任何人都知道我可以如何使文件有效的字符串?

+0

为什么不使用tarfile? –

+1

@ m.wasowski我结束了使用pyzipfile。 – SilentVoid

回答

0

对不起新问题,我刚刚发现我一直在试图重新发明轮子。显然,它已经存在于Squeeze的名下。

+0

然后接受你自己的答案作为*答案 –

相关问题