我正在构建一个python脚本,用于在上传到互联网时查找文件的ETA。我做了粗略的工作,我尝试在python上做它。 基本上程序会要求您输入文件大小和上传速度。 但我被困了!!
脚本是这样的:..(正在进行中)
print "UPLOADING TIME COVERTER"
print
print " Please enter the file size in mb"
size = raw_input()
# for e.g 237mb
print
print "Please enter the current uploading speed in kb /sec"
speed = raw_input()
# for e.g 60kb/sec
print
A = speed * 60
# speed is changed into minutes
B = (A / 1024)
#KB is changed in MB
C = (B / size)
print "your eta is %r hours" %(C)`
我收到的错误是:
Traceback (most recent call last):
File "uploadingeta.py", line 14, in <module>
B = (A - 1024)
TypeError: unsupported operand type(s) for -: 'str' and 'int'.
我搜索谷歌和所有地方,但无法解决。
答案 0 :(得分:0)
这是一些用于解析和阅读的代码。修改以适应。
import re
mb_match = re.compile(r'^([0-9])+[Mm][Bb]?$').match
kb_match = re.compile(r'^([0-9])+[Kk][Bb]?$').match
b_match = re.compile(r'^([0-9])+[Bb]?$').match
def parse_size(text):
text = text.strip()
match = mb_match(text)
if match:
return int(match.group(1)) * 1024 * 1024
match = kb_match(text)
if match:
return int(match.group(1)) * 1024
match = b_match(text)
if match:
return int(match.group(1))
raise ValueError('Invalid input')
while True:
text = raw_input('Enter file size...')
try:
file_size_bytes = parse_input(raw_input('Enter file size: '))
break
except ValueError as e:
print(e)
while True:
text = raw_input('Enter upload speed size...')
try:
upload_speed = parse_input(raw_input('Enter file size: '))
break
except ValueError as e:
print(e)
#file_size_bytes
#upload_speed
答案 1 :(得分:0)
你不能划分str和int。你必须将它转换为诸如
之类的intINT(速度)
您还可以在文件中添加代码以进行debuging,例如
打印(类型(速度))
这将告诉您变量的数据类型,它对解决各种问题很有用。
答案 2 :(得分:0)
使用
speed = int(raw_input)
你的代码给你一个错误的原因是因为当你使用原始输入时,它会将输入记录为字符串,所以在这种情况下你必须使用int()来转换它。
你可能已经看到了其他答案,但希望我能解释一下这个问题。