标签: sys

这个简单的pygame程序中的错误在哪里?(sys.exit()不工作)

可能重复:
退出时挂着Pygame程序

跑这个简单的程序:

import pygame, sys

pygame.init()

screen = pygame.display.set_mode((800,600))

while True:
    #process input
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                sys.exit()
Run Code Online (Sandbox Code Playgroud)

在IDLE中得到这个简单的消息:

Traceback (most recent call last):
  File "C:/Users/Aerovistae/Desktop/GD_in_class", line 12, in <module>
    sys.exit()
SystemExit
Run Code Online (Sandbox Code Playgroud)

程序停止响应,必须是Ctrl + Alt + Del'd.我无法看到我在这里出错的地方,这是我能得到的最基本的.我跟随教授在讲座中所做的事情,我发现我的代码和他的代码之间没有任何区别.谁能提出可能导致问题的原因?

python sys

1
推荐指数
1
解决办法
559
查看次数

Sys.stdout.write没有按预期工作

我有一个迭代两个字符串数组的测试脚本,我想用它sys.stdout.write来为用户提供一个简单的"进度条".

我目前的剧本:

import sys
from time import sleep
names  = ['Serv1', 'Serv2', 'Serv3', 'Serv4', 'Serv5']
states = ['Running', 'Stopped', 'Running', 'Running', 'Stopped']
terminated=0
passed=0
for i in range (0, len(names)):
    if 'Running' in states[i]:
        print " [*] stop if running {0} ".format(str(names[i]))
        #service_info(action, machine, names[i])
        terminated+=1
    else:
        print " [!] Passing over {0} ".format(str(names[i]))
        passed+=1
    sleep(2)
    sys.stdout.write(" [ ] {0}/{1} progress left\r".format(i+1, len(names)))
Run Code Online (Sandbox Code Playgroud)

预期输出用于sys.stdout.write保持更新,而打印语句通知用户某些动作.但是当我运行它时,唯一的时间sys.stdout.write显示在脚本的末尾.例如

 [*] stop if running Serv1
 [!] Passing over Serv2
 [*] …
Run Code Online (Sandbox Code Playgroud)

python stdout sys python-2.7

1
推荐指数
1
解决办法
5560
查看次数

生成零字符串的最快方法

我需要生成一些零字符串,例如:

import sys
MB = 1024 * 1024
cache = ''
while sys.getsizeof(cache) <= 10 * MB:
    cache = cache + "0"
Run Code Online (Sandbox Code Playgroud)

并将其保存到文件中,但我的印象是这种方法太慢,并且浪费大量系统资源。

尽可能快地做到这一点的最佳方法是什么?

python sys python-3.x

1
推荐指数
1
解决办法
2468
查看次数

我想知道sys.exit(-1)在python中到底返回什么?

我的代码是这样的:

if (not Y):
    print ("Can't print")
    sys.exit(-1)
Run Code Online (Sandbox Code Playgroud)

我无法理解参数(-1)返回什么?

sys

1
推荐指数
1
解决办法
6821
查看次数

处理参数时如何跳过sys.argv [0]?

我编写了一个Python脚本,用于检查参数,如果有足够的参数则打印它们,如果没有足够的参数或没有参数则显示警告。但是默认情况下,脚本本身是参数之一,我不想将其包含在代码操作中。

import sys

# print warning if no arguments.
if len(sys.argv) < 2: 
  print("\nYou didn't give arguments!")
  sys.exit(0)

# print warning if not enough arguments.
if len(sys.argv) < 3: 
  print("\nNot enough arguments!")
  sys.exit(0)

print("\nYou gave arguments:", end=" ")
# print arguments without script's name
for i in range(0, len(sys.argv)):
  if sys.argv[i] == sys.argv[0]: # skip sys.argv[0]
    continue
  print(sys.argv[i], end=" ") # print arguments next to each other.

print("")
Run Code Online (Sandbox Code Playgroud)

我已经解决了这个问题:

if sys.argv[i] == sys.argv[0]: # skip sys.argv[0]
    continue
Run Code Online (Sandbox Code Playgroud)

但是,有没有更好/更合适的方法来忽略argv [0]?

python sys argv

1
推荐指数
1
解决办法
429
查看次数

在 python 中终止使用 exec(open(file).read()) 运行的程序

在我的代码中,我从 tkinter gui 调用管道。当用户按下“运行”按钮时,整个管道开始运行。如果选择了某些设置,则会调用主 GUI 的顶层,要求提供附加文件。除非按下取消按钮或关闭窗口 X,否则这一切都有效。顶层关闭但程序继续运行。最终它会因为文件不存在而崩溃。调用 sys.exit() 不是解决方案,因为这样整个 gui 都会关闭,我只希望特定的顶层关闭并停止正在运行的文件。

如何杀死使用 exec(open(file).read()) 运行的文件而不杀死整个程序?

python tkinter exec sys

1
推荐指数
1
解决办法
1471
查看次数

打印程序有效,但打印额外的字母/数字

我试图获得一个简单的程序来获取命令行参数并打印出来.任何名称加上解释标记的字符串.例子:鲍勃!!!!

import sys

def hello(name):
    name = name + "!!!!"
    print(hello,name)

def main():
    hello(sys.argv[1])

main()
Run Code Online (Sandbox Code Playgroud)

它正确打印出Bob !!!!,但还有其他一些东西:

函数你好在0x7f69465145f0鲍勃!!!! 围绕整个事情的<>除了鲍勃!!!!

我不知道为什么它不会简单地打印出来,鲍勃!!!!,通常没有其他的东西.

此外,每次运行时,<>中的数字/字母组合都会发生变化.将在功能打招呼鲍勃!!!! 保持不变.

python printing command-line sys

0
推荐指数
1
解决办法
75
查看次数

python:sys上的语法无效

我是Python的新手,
我尝试使用代码执行文件:

import sys
def main():
    print sys.argv[1]

main()
Run Code Online (Sandbox Code Playgroud)

对于此运行:从命令行获取hello.py,但得到了

C:\Python34>hello.py
File "C:\Python34\hello.py", line 4
print sys.argv[1]
        ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

python sys

0
推荐指数
1
解决办法
5303
查看次数

Python,引用与运行文件在同一目录中的文件

如果我有一个名为example.py的Python文件,with open('%s/data.csv' % sys.path[0]) as var_name:并且data.csv与example.py位于同一目录中,那么如果我从终端运行example.py它会正常工作,但是当使用unittest时它不起作用.我的理解是,当从终端运行它时,sys.path [0]为我提供了正在运行的文件的路径(example.py),因此如果data.csv和example.py在同一目录中,那么sys. path [0] /data.csv将正确找到data.csv.但是当unittest运行时,无论什么幕后原因,sys.path [0]都是空的,并且正确找不到/data.csv.

所以我想知道什么是一个好的策略(也许是一些显式的代码:))是为了使这个引用总是工作无论如何(我猜没有sys.path [0]但是如果有一些东西可以使用我将会接受).

我还应该提到我在OS X 10.9.3上使用python 2.7

python reference file sys

0
推荐指数
1
解决办法
2916
查看次数

捕获异常时,sys.exit()不会退出程序

该程序检查分子式.我希望程序在检测到公式中的错误时立即退出.例如,公式"a"不正确.当我通过我的代码运行它时:

def readletter():
    if q.peek() in string.ascii_lowercase:
        print(q.peek())
        return q.get()
    else:
        raise Formelfel("Förväntad liten bokstav.")

def readLetter():
    if q.peek() in string.ascii_uppercase:
        print(q.peek())
        return q.get()
    else:
        raise Formelfel("Förväntad stor bokstav.")

def readAtom():
    X = ""
    try:
        X += readLetter()
    except Formelfel:
        print("Missing capital letter at end of row "+getRest())
        sys.exit()
        return

    try:
        x = readletter()
        atom = X+x
    except (Formelfel, TypeError):
        atom = X

    if atom in ATOMER:
        return
    else:
        raise Formelfel("Okänd atom.")

def readGroup():
    if q.peek() in string.ascii_uppercase or q.peek() …
Run Code Online (Sandbox Code Playgroud)

python exit sys

0
推荐指数
1
解决办法
969
查看次数

标签 统计

sys ×10

python ×9

argv ×1

command-line ×1

exec ×1

exit ×1

file ×1

printing ×1

python-2.7 ×1

python-3.x ×1

reference ×1

stdout ×1

tkinter ×1