我有这个python脚本打开一个文件对话框并选择一个文本文件,而不是将其内容复制到另一个文件。
当我打开第二个文件时它仍然是空的
任何人都可以帮我解决这个问题吗?
#!/usr/bin/python
import Tkinter
import tkFileDialog
''''Open txt files in the selected path '''
def OpenRead():
Tkinter.Tk().withdraw()
in_path = tkFileDialog.askopenfile(initialdir = 'C:\Users\LT GM\Downloads', filetypes=[('text files', ' TXT ')])
readingFile = in_path.read()
writeFile = open ('copiedFile.txt', 'w')
writeFile.write(readingFile)
print " we'r done!!"
in_path.close()
writeFile.close()
if __name__== "__main__":
OpenRead()
答案 0 :(得分:2)
您可以使用shutil.copyfile
,无需打开或阅读该文件。
from shutil import copyfile
copyfile("source","dest")
所以对于你的代码:
def OpenRead():
Tkinter.Tk().withdraw()
in_path = tkFileDialog.askopenfile(initialdir = 'C:\Users\LT GM\Downloads', filetypes=[('text files', ' TXT ')])
copyfile(in_path.name, 'copiedFile.txt')
print " we'r done!!"
if __name__== "__main__":
OpenRead()
该文件也将被复制到你的pwd所以如果你想要它特别保存在某个地方,你需要传递完整的路径。
答案 1 :(得分:0)
从文件到文件的逐行复制方式:
#!/usr/bin/python
from os import listdir
from os.path import isfile, join
def readWrite():
mypath = 'D:\\'
files = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for file in files:
if file.split('.')[1] == 'txt':
outputFileName = 'out-' + file
with open(mypath+outputFileName, 'w') as w:
with open(mypath+file) as f:
for l in f:
print l
w.write(l)
if __name__== "__main__":
readWrite()
更新: 更新了上面的代码,因此它读取指定目录中的所有txt文件并将它们复制到其他文件中。您可以按照自己喜欢的方式玩目录。我还添加了一个“print l”,它将打印传入文件的内容。
答案 2 :(得分:0)
<强> readingFile = in_path.read()
强>
读取文件的内容并将其放在变量readingFile中
假设文件的内容是,例如,hello readFile的值将是hello
<强> destinationFile = readingFile, '.txt'
强>
destinationFile是一个元组,值为'&lt;'文件内容'&gt;','。txt'
而是使用 destinationFile = readingFile+'.txt'
这会奏效。但最终结果将不是您所期望的。结果将是一个文件,其名称为阅读文件的内容,内容也相同。更好地指定 destinationFile 中的文件名,例如 destinationFile = 'destfile.txt'
答案 3 :(得分:-1)
为什么不直接使用os和shell copy命令。
import os
start= '~/user/file'
dest= '~/user/folder1/file'
os.system('cp %s %s' %(start,dest))