小编Edw*_*ard的帖子

从父文件夹导入模块

我正在运行Python 2.5.

这是我的文件夹树:

ptdraft/
  nib.py
  simulations/
    life/
      life.py
Run Code Online (Sandbox Code Playgroud)

(我也在__init__.py每个文件夹中,为了便于阅读,这里省略了)

如何nib从模块内导入life模块?我希望有可能不用修补sys.path.

注意:正在运行的主模块位于该ptdraft文件夹中.

python directory module path python-import

552
推荐指数
21
解决办法
59万
查看次数

如何在Python中获取当前执行文件的路径?

这似乎是一个新手问题,但事实并非如此.一些常见的方法并不适用于所有情况:

sys.argv中[0]

这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,这不起作用,这可能发生在现实生活中.

__文件__

这意味着使用path = os.path.abspath(os.path.dirname(__file__)),但我发现这不起作用:

  • py2exe没有__file__属性,但有一个解决方法
  • 从IDLE运行时execute()没有__file__属性
  • OS X 10.6我得到的地方 NameError: global name '__file__' is not defined

回答不完整的相关问题:

我正在寻找一个通用的解决方案,一个适用于所有上述用例的解决方案.

更新

这是测试用例的结果:

输出python a.py(在Windows上)

a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz

b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
Run Code Online (Sandbox Code Playgroud)

a.py

#! /usr/bin/env python
import os, sys

print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print …
Run Code Online (Sandbox Code Playgroud)

python directory path

183
推荐指数
8
解决办法
12万
查看次数

如何从IDLE物理打印彩色的python代码?

我已经找到了答案,但相关的解决方案似乎'print'与翻译有关.

我想知道是否有可能从IDLE打印(物理上在纸上)彩色蟒蛇代码?

我已经去过:File > Print Window在IDLE中它似乎只打印出黑白版本而没有提示是否打印颜色等.

编辑:

看起来这可能不可用所以选项是将代码复制到像SciTE这样的文本编辑器并从那里打印 - 就像默认的IDLE语法突出显示一样.

python printing syntax-highlighting python-idle python-2.7

8
推荐指数
1
解决办法
2万
查看次数

使用pygame旋转图像

我是pygame的新手,想要编写一些代码,只需每10秒将图像旋转90度.我的代码看起来像这样:

    import pygame
    import time
    from pygame.locals import *
    pygame.init()
    display_surf = pygame.display.set_mode((1200, 1200))
    image_surf = pygame.image.load("/home/tempuser/Pictures/desktop.png").convert()
    imagerect = image_surf.get_rect() 
    display_surf.blit(image_surf,(640, 480))
    pygame.display.flip()
    start = time.time()
    new = time.time()
    while True:
        end = time.time()
        if end - start > 30:
            break
        elif end - new  > 10:
            print "rotating"
            new = time.time()
            pygame.transform.rotate(image_surf,90)
            pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,即图像不旋转,尽管每10秒钟在终端中打印"旋转".有人能告诉我我做错了什么吗?

python pygame python-2.7

7
推荐指数
1
解决办法
2万
查看次数

如何使用Python在操作系统剪贴板中添加/获取图像数据?

我有一些编辑图像文件的 Python 代码,并且想知道如何将
图像数据添加到操作系统剪贴板并从那里获取它。

当在 Python 中搜索跨平台解决方案来替换或获取剪贴板文本
时, 有许多简单的答案可以实现(例如,使用内置的 Tkinter 模块和一些代码)。
然而,这些方法只能使用纯文本,而不能使用图像等其他剪贴板数据。

我的 Python 版本在 Windows 上是 3.x,但答案需要是跨平台的
(在不同操作系统上工作),并且还应该支持其他 Python 版本,如 2.x。
我认为它应该只使用内置的Python模块,并且代码不应该太复杂(或者对其作用进行解释)。它可以是 Python 模块,因为这些文件可以包含在与可移植程序代码相同的文件夹中以避免安装。

还有一些其他相关问题可能适用于图像,但它们仅支持单个操作系统。最好的是在Python3中将图像复制到剪贴板使用PIL和win32clipboard在python中将图像写入Windows剪贴板?
那里描述的方法(仅适用于 Windows)似乎使用以下步骤:

  • 获取图像的原始二进制数据 - 该方法使用 Python 图像
    库 ( PIL/Pillow ) 模块加载图像文件,因为它具有稍后在简单
    且流行的标准 API 中使用的其他处理功能。这可以使用不同的模块来完成(例如Pygame)。
  • 使用内置io
    模块创建一个文件对象变量(用于内存中输入/输出流)。对于 Python 2.x,from cStringIO import StringIO使用,但对于 Python 3,使用
    更好的二进制流对象类型 - 旧的现在仅允许文本。io.BytesIO
  • 将图像数据以 BMP(Windows 位图/设备独立位图)文件格式保存
    到上一步中的文件对象变量中。使用 PIL/Pillow 的方法首先将此
    数据转换为.convert("RGB")包含它的变量。
  • 获取文件对象变量内存缓冲区的全部内容作为二进制数据(bytes对象),
    从位置 14 …

python clipboard python-3.x clipboarddata

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

Python:如何通过派生类实例访问父类对象?

对不起我的愚蠢问题,但是......我想我有这些课程:

class A():
    msg = 'hehehe'

class B(A):
    msg = 'hohoho'

class C(B):
    pass
Run Code Online (Sandbox Code Playgroud)

以及B或C的实例.如何通过此实例从父类的对象中获取变量'msg'?我试过这个:

foo = B()
print super(foo.__class__).msg
Run Code Online (Sandbox Code Playgroud)

但得到消息:"TypeError:super()参数1必须是类型,而不是classobj".

python

5
推荐指数
2
解决办法
2万
查看次数

如何隐藏pygame上的任务栏

我想知道有没有人知道如何隐藏 pygame 任务栏?

我的 pygame 程序真的需要这个!

谢谢!

python pygame taskbar titlebar

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

不正常的数学结果不正确?

当我使用math.cos()和math.sin()函数时,我的python解释器表现得很时髦.例如,如果我在计算器上执行此操作:

cos(35)*15+9 = 21.28728066
sin(35)*15+9 = 17.60364655
Run Code Online (Sandbox Code Playgroud)

但是当我在python上执行此操作时(3.2和2.7)

>>> import math
>>> math.cos(35)*15+9
-4.5553830763726015

>>> import math
>>> math.sin(35)*15+9
2.577259957557734
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

编辑:为了以防万一,你如何将Python中的Radian更改为度?

python math trigonometry

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

为什么在 Chrome 51 中查看的 SVG 无法正确定位并在文本后添加间隙?

我制作了一个简单的可缩放矢量图形图像(使用 Inkscape 工具 v0.91)。编辑器显示一切正常,但是当我在 Google Chrome 51 中打开文件时,它没有按应有的方式显示,定位错误(某些文本后增加了间隙)。我创建了一个更简单的示例版本,如下所示,其中删除了左侧的嵌入图像,并在原始文本中添加了一行,其中左侧的水平文本应结束。
原图(在编辑器中查看):
上一行描述的图像,https://i.stack.imgur.com/lay4B.png
在Google Chrome 51浏览器中查看的图像: 上一行描述的图像,https://i.stack.imgur.com/hyVPZ.png
我不明白为什么会发生这种情况,因为浏览器应该以与图像描述相同的字体大小和位置绘制图像中的文本,如果缩放发生变化则缩放它们。查看开发人员工具中的元素查看器可以确认文本没有较小的字体大小属性,并且两个查看器都处于相同的缩放级别。编辑器中显示的图像被保存到文件中,并且在被浏览器使用之前没有被修改,所以这肯定是浏览器的问题。即使没有人能找到这个问题的原因,我仍然想要一个解决方案。

这是一个示例图像,用于重现问题并进行测试(我之前忘记了这一点,建议这样做)。SVG 图像主机服务器似乎很少见,因此我将其添加为代码片段,但可以将其复制回具有.svg扩展名的文件中,以便在浏览器中正常查看。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="135.972"
   height="40"
   viewBox="0 0 135.97202 39.999998"
   id="svg2"
   version="1.1"
   inkscape:version="0.91 r13725"
   sodipodi:docname="test.svg"
   inkscape:export-filename="C:\blah\logo.png"
   inkscape:export-xdpi="90"
   inkscape:export-ydpi="90">
  <defs
     id="defs4">
    <marker
       inkscape:isstock="true"
       style="overflow:visible"
       id="marker4688"
       refX="0"
       refY="0"
       orient="auto"
       inkscape:stockid="Arrow1Send">
      <path
         transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
         style="fill:#a5a5a5;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
         id="path4690"
         inkscape:connector-curvature="0" />
    </marker> …
Run Code Online (Sandbox Code Playgroud)

html browser svg

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