小编dln*_*385的帖子

如何在Windows 7中安装Python 2.x和Python 3.x.

我在Windows 7上使用Python 3.x进行大部分编程,但现在我需要使用Python Imaging Library(PIL),ImageMagick和wxPython,所有这些都需要Python 2.x.

我可以在Windows 7中安装Python 2.x和Python 3.x吗?当我运行脚本时,我如何"选择"应该运行哪个版本的Python?上述程序是否能够同时处理多个版本的Python?我已经搜索了几个小时和几个小时来如何做到这一点无济于事.

谢谢.

python windows compatibility backwards-compatibility build-environment

221
推荐指数
9
解决办法
22万
查看次数

如何在与Python脚本相同的目录中可靠地打开文件

我曾经只是使用像这样的命令打开与当前运行的Python脚本位于同一目录中的文件

open("Some file.txt", "r")
Run Code Online (Sandbox Code Playgroud)

但是,我发现当脚本在Windows中通过双击运行时,它会尝试从错误的目录中打开该文件.

从那以后我使用了表格的命令

open(os.path.join(sys.path[0], "Some file.txt"), "r")
Run Code Online (Sandbox Code Playgroud)

每当我想打开一个文件.这适用于我的特定用法,但我不确定是否sys.path[0]可能在其他一些用例中失败.

所以我的问题是:打开与当前运行的Python脚本位于同一目录中的文件的最佳和最可靠的方法是什么?

这是我到目前为止能够弄清楚的:

  • os.getcwd()os.path.abspath('')返回"当前工作目录",而不是脚本目录.

  • os.path.dirname(sys.argv[0])os.path.dirname(__file__)返回用于调用脚本的路径,该路径可能是相对的,甚至是空白的(如果脚本在cwd中).此外,__file__当脚本在IDLE或PythonWin中运行时不存在.

  • sys.path[0]并且os.path.abspath(os.path.dirname(sys.argv[0]))似乎返回脚本目录.我不确定这两者之间是否有任何区别.

编辑:

我刚刚意识到我想做的事情会更好地描述为"在与包含模块相同的目录中打开一个文件".换句话说,如果我导入了一个我在另一个目录中编写的模块,并且该模块打开了一个文件,我希望它在模块的目录中查找该文件.我认为我发现的任何东西都不能做到这一点......

python directory

138
推荐指数
4
解决办法
12万
查看次数

在Python中处理字符串中的转义序列

有时当我从文件或用户那里获得输入时,我会得到一个包含转义序列的字符串.我想以与Python处理字符串文字中的转义序列相同的方式处理转义序列.

例如,假设myString定义为:

>>> myString = "spam\\neggs"
>>> print(myString)
spam\neggs
Run Code Online (Sandbox Code Playgroud)

我想要一个函数(我会称之为process)这样做:

>>> print(process(myString))
spam
eggs
Run Code Online (Sandbox Code Playgroud)

重要的是该函数可以处理Python中的所有转义序列(在上面链接的表中列出).

Python有功能吗?

python string escaping

93
推荐指数
4
解决办法
8万
查看次数

这是内存泄漏还是误报?

这是我的代码:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

public class temp {
    public static void main(String[] args) throws FileNotFoundException {
        BufferedReader a = new BufferedReader(new FileReader("a"));
        Scanner scanner = new Scanner(a).useDelimiter(",");
        scanner.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到一个警告new Scanner(a)说(我正在使用jdk1.7.0_05进行编译.):

Resource leak: '<unassigned Closeable value>' is never closed.
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或者这只是一个错误的警告?

java eclipse warnings memory-leaks

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

如何在没有使用Python的窗口的情况下在屏幕上显示文本

问题:

我需要在没有窗口的情况下直接将文本写入屏幕.文本需要出现在所有其他窗口和全屏应用程序之上,并且不应以任何方式可点击或可交互.

例: 屏幕上的文字截图. 文本不需要具有透明背景,如示例中所示.我可以在Windows 7上使用Python 2或3.

我尝试解决方案:

我尝试使用Tkinter制作独立标签:

编辑:在Christian Rapp的帮助下进行改进

import Tkinter
label = Tkinter.Label(text='Text on the screen', font=('Times','30'), fg='black', bg='white')
label.master.overrideredirect(True)
label.master.geometry("+250+250")
label.master.lift()
label.master.wm_attributes("-topmost", True)
label.master.wm_attributes("-disabled", True)
label.master.wm_attributes("-transparentcolor", "white")
label.pack()
label.mainloop()
Run Code Online (Sandbox Code Playgroud)

什么有效:

  • 显示的文本没有窗口
  • 文本仍然高于所有其他窗口
  • 背景可以是透明的

什么不:

  • 该文本未显示以上全屏应用程序
  • 文本块会单击在其上发生的事件
  • 背景透明度不是alpha,因此存在硬边

python windows user-interface text screen

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

使用Java有效地对图像进行颜色循环

我正在写一个Mandelbrot分形观察器,我想以聪明的方式实现色彩循环.给定一个图像,我想修改它的IndexColorModel.

据我所知,没有办法修改IndexColorModel,并且无法为图像提供新的IndexColorModel.事实上,我认为没有办法提取其颜色模型或图像数据.

似乎唯一的解决方案是保持用于创建图像的原始图像数据和调色板,手动创建具有旋转颜色的新调色板,创建新的IndexColorModel,然后从数据创建一个全新的图像和新的颜色模型.

这一切似乎都是太多的工作.有更简单快捷的方式吗?

这是我能想到的最佳解决方案.此代码创建一个1000x1000像素的图像,并显示以每秒约30帧的速度循环的颜色动画.

(旧)

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;

public class ColorCycler {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame jFrame = new JFrame("Color Cycler");
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.add(new MyPanel());
        jFrame.pack();
        jFrame.setVisible(true);
    }

}

class MyPanel extends JPanel implements ActionListener {

    private byte[] reds = new byte[216];
    private byte[] greens = new byte[216];
    private byte[] blues = new byte[216];
    private final …
Run Code Online (Sandbox Code Playgroud)

java performance swing image

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

很好地代表python中的浮点数

我想将一个浮点数表示为一个四舍五入到一些有效数字的字符串,并且从不使用指数格式.基本上,我想显示任何浮点数,并确保它"看起来不错".

这个问题有几个部分:

  • 我需要能够指定有效位数.
  • 有效位数需要变量,使用字符串格式化运算符无法完成.[编辑]我被纠正了; 字符串格式化操作符可以执行此操作
  • 我需要它像一个人期望的那样四舍五入,而不是像1.999999999999那样

我已经想出了这样做的一种方法,虽然它看起来像是一种工作,但它并不完美.(最大精度为15位有效数字.)

>>> def f(number, sigfig):
    return ("%.15f" % (round(number, int(-1 * floor(log10(number)) + (sigfig - 1))))).rstrip("0").rstrip(".")

>>> print f(0.1, 1)
0.1
>>> print f(0.0000000000368568, 2)
0.000000000037
>>> print f(756867, 3)
757000
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?为什么Python没有内置函数呢?

python floating-point significant-digits representation

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

在Windows 7上用Python快速获取屏幕上某些像素的颜色

我需要在屏幕上或从活动窗口获取某些像素的颜色,我需要快速完成.我尝试过使用win32gui和ctypes/windll,但它们太慢了.这些程序中的每一个都获得100像素的颜色:

import win32gui
import time
time.clock()
for y in range(0, 100, 10):
    for x in range(0, 100, 10):
        color = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x , y)
print(time.clock())
Run Code Online (Sandbox Code Playgroud)

from ctypes import windll
import time
time.clock()
hdc = windll.user32.GetDC(0)
for y in range(0, 100, 10):
    for x in range(0, 100, 10):
        color = windll.gdi32.GetPixel(hdc, x, y)
print(time.clock())
Run Code Online (Sandbox Code Playgroud)

每个都需要大约1.75秒.我需要这样的程序花费不到0.1秒.是什么让它如此缓慢?

我正在使用Python 3.x和Windows 7.如果您的解决方案需要我使用Python 2.x,请链接到一篇文章,展示如何安装Python 3.x和2.x. 我看了,但无法弄清楚如何做到这一点.

谢谢!

python screen pixel colors windows-7

11
推荐指数
4
解决办法
4万
查看次数

如何查找未显示的元素的高度

我正在写一个网页,其中包含一个可以滑动打开和关闭的行的表格.最初,有些行是关闭的(display: none),我希望它们可以滑动打开.设置高度和使用overflow: hidden对表行不起作用,所以我正在更改表内div的高度.

这有效.唯一的问题是我需要知道div滑动之前的高度,这似乎是不可能的.我能想到的一个解决方案是加载带有行显示的页面,然后遍历它们,存储它们的高度并隐藏它们.我不喜欢这个解决方案,因为页面会在加载时跳转.

这是我的问题的一个简单,可运行的例子.

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
table, td {border: 1px solid black;}
#lower_row {display: none;}
#lower_div {overflow: hidden;}
</style>
<script type="text/javascript">
function toggleLower() {
    lowerRow = document.getElementById("lower_row");
    lowerDiv = document.getElementById("lower_div");
    if (getStyle(lowerRow, "display") == "none") {
        lowerRow.style.display = "table-row";
    }
    else {
        lowerRow.style.display = "none";
    }
    showHeight();
}
function showHeight() {
    lowerDiv = document.getElementById("lower_div");
    document.getElementById("info").innerHTML = getStyle(lowerDiv, "height");
}
// Return a style atribute of an …
Run Code Online (Sandbox Code Playgroud)

html javascript css

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

如何在 Python 3 中将文本流编码为字节流?

将字节流解码为文本流很容易:

import io
f = io.TextIOWrapper(io.BytesIO(b'Test\nTest\n'), 'utf-8')
f.readline()
Run Code Online (Sandbox Code Playgroud)

在本例中,io.BytesIO(b'Test\nTest\n')是字节流,f是文本流。

我想做恰恰相反的事情。给定一个文本流或类文件对象,我想将其编码为字节流或类文件对象,而不处理整个流

这是我迄今为止尝试过的:

import io, codecs

f = codecs.getreader('utf-8')(io.StringIO('Test\nTest\n'))
f.readline()
# TypeError: can't concat str to bytes

f = codecs.EncodedFile(io.StringIO('Test\nTest\n'), 'utf-8')
f.readline()
# TypeError: can't concat str to bytes

f = codecs.StreamRecoder(io.StringIO('Test\nTest\n'), None, None,
                         codecs.getreader('utf-8'), codecs.getwriter('utf-8'))
# TypeError: can't concat str to bytes

f = codecs.encode(io.StringIO('Test\nTest\n'), 'utf-8')
# TypeError: utf_8_encode() argument 1 must be str, not _io.StringIO

f = io.TextIOWrapper(io.StringIO('Test\nTest\n'), 'utf-8')
f.readline()
# TypeError: underlying read() …
Run Code Online (Sandbox Code Playgroud)

python io stream character-encoding python-3.x

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