我正在尝试将文件从本地驱动器复制到网络存储。该文件是一个包含6380行的TXT文件。打开目标文件,文件的副本不完整,它在行中间的第6285行停止。文件本身是一个103 kb的G代码。
源文件行6285:“Z17.168 Y7.393”并且文件继续......
目标文件行6285:“Z17.168 Y7.3”之后是文件的结尾。
我厌倦了几个不同的复制操作:
from shutil import copyfile
copyfile(WorkDir + FileName, CNCDir + FileName)
或
os.system("copy "+WorkDir + FileName +" " + CNCDir + FileName)
或DOS XCOPY命令。 奇怪的是,如果我在一个单独的dos窗口中使用相同的语法执行复制命令它完美无缺,只需从PYTHON脚本执行它,它就不会复制完整的文件。
有什么想法吗?
答案 0 :(得分:0)
使用以下内容获取一些“调试”构造:
选项1(直读,应将内容打印到cmd控制台或编辑器标准输出):
file = open(“testfile.text”, “r”)
print file.read()
选项2(读取+将文件内容加载到内存中,将内容从内存写入新文件):
file = open(“testfile.text”, “r”)
count_lines = 0
counted_lines = 6380
content = []
for line in file:
count_line += 1
content.append(line)
print 'row : "%s" content : "%s"' % (count_lines, file)
if counted_lines == count_lines:
dest_file = open(“new_testfile.txt”,”w”)
for item in content:
dest_file.write(item)
dest_file.close()
else:
print 'error at line : %s' % count_lines
选项3(第6285行的排除字符问题并显示其内存加载问题):
from itertools import islice
# Print the "6285th" line.
with open(“testfile.text”) as lines:
for line in islice(lines, 6284, 6285):
print line
找到选项4 here。
和
选项5是:
import linecache
linecache.getline(“testfile.text”, 2685)
答案 1 :(得分:0)
在目标文件上使用选项1可以得到:
Z17.154 Y7.462
Z17.159 Y7.439
Z17.163 Y7.416
Z17.168 Y7.3
"done"
Press any key to continue . . .
使用选项2给出:
row : "6284" content : "<open file 'Z:\\10-Trash\\APR_Custom.SPF', mode 'r' at 0x0000000004800AE0>"
row : "6285" content : "<open file 'Z:\\10-Trash\\APR_Custom.SPF', mode 'r' at 0x0000000004800AE0>"
与目标文件具有相同内容的TXT文件:
最后3行:
Z17.159 Y7.439
Z17.163 Y7.416
Z17.168 Y7.3
我尝试了选项4-6,但我没有看到背后的目的。使用选项5,我必须将行号更改为6284,因为列表超出了该号码的范围。
from itertools import islice
# Print the "6285th" line.
with open(CNCDir + FileName) as lines:
for line in islice(lines, 6284, 6285):
print "Option 3:"
print line
f=open(CNCDir + FileName)
lines=f.readlines()
print "Option 4:"
print lines[6284]
import linecache
print "Option 5:"
print linecache.getline(CNCDir + FileName, 6285)
从命令行输出文件:
Copy to CNC:
Source: C:\F-Engrave\WorkDir\APR_Custom.SPF
Traget: Z:\10-Trash\APR_Custom.SPF
Option 3:
Z17.168 Y7.3
Option 4:
Z17.168 Y7.3
Option 5:
Z17.168 Y7.3
"done"
Press any key to contiune. . .