小编Tim*_*ong的帖子

如何在Python中获取文件系统的根目录?

情况:我需要使用最 Pythonic 的方式找到任何操作系统的顶级 [root] 目录,而不需要系统调用。

问题:虽然我可以使用诸如 之类的东西检查操作系统if "Windows" in platform.system(),但我不能太确定驱动器号是否总是C:\/(后者不太可能)。我也无法确定是否只有 Windows 和 *NIX 需要编目。

问题:有没有办法获取任何操作系统的顶级目录?最好使用该os模块,因为我已经在使用它了。

python python-2.7 python-os

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

如何仅下载 Python 数据的前 x 个字节

情况:要下载的文件是一个大文件(>100MB)。这需要相当长的时间,尤其是在互联网连接速度较慢的情况下。

问题:但是,我只需要文件头(前 512 个字节),它将决定是否需要下载整个文件。

问题:有没有办法只下载文件的前 512 个字节?

附加信息:目前下载是使用 Python2.7 中的 urllib.urlretrieve 完成的

python urllib download python-2.7 urlretrieve

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

一个向量C++中的两种类型的值

假设我有一个班级学生的向量,但问题的要求表明我不能在构造函数中将等级放在一起,所以我将不得不解决它.

我有可能在一个向量槽中有两个值吗?

例如,Student类和字符串成绩是我的参数.

vector<Student*, string> Students;
Run Code Online (Sandbox Code Playgroud)

所以,在一天结束的时候,如果我对矢量进行测试,我应该在一个插槽中获得学生和成绩.

这有用吗?如果是这样,我如何push_back值?

否则,还有另一种方法吗?

c++ vector

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

Python 比较字符串的最快方法

情况:将 f​​ileA 中的字符串与 fileB 中的预定义字符串进行比较。我的代码中所述函数的示例:

string = open('fileA', 'r')
stringlist = open('fileB', 'r')

//compare the strings
for i in string:
    for j in stringlist:
        if i == j:
            print("Same String found!" + i + " " + j)
Run Code Online (Sandbox Code Playgroud)

问题:在我的实际程序中,string包含超过200个字符串,而stringlist是一个包含超过50,000个字符串的文件。正如我所读到的,嵌套 for 循环作为比较函数很慢。

问题:比较两个文件内容的最快方法是什么?

附加信息 1:这两个文件都是 CSV 文件,并在我的程序中以 CSV 分隔的形式打开。

附加信息 2:字符串是 md5 哈希值(32 个字符)。

附加信息 3:我愿意接受其他存储字符串的方法,即即时比较字符串,而不是将其保存到 fileA。

附加信息 4:我也愿意接受我可以使用的其他方法或模块(即:线程/并行处理)——速度是这里的关键。

python string comparison string-comparison python-3.x

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

如何找到哪个文件是"启动器"Python

情况:我们知道下面将检查脚本是否已被直接调用.

if __name__ == '__main__':
    print "Called directly"

else:
    print "Imported by other python files"
Run Code Online (Sandbox Code Playgroud)

问题:该else子句只是一个通用子句,只要脚本没有直接调用就会运行.

问题:如果没有直接调用,有没有办法获取导入的文件?

附加信息:下面是我想象代码的示例,只是我不知道要放什么<something>.

if __name__ == '__main__':
    print "Called directly"

elif <something> == "fileA.py":
    print "Called from fileA.py"

elif <something> == "fileB.py":
    print "Called from fileB.py"

else:
    print "Called from other files"
Run Code Online (Sandbox Code Playgroud)

python python-import filereference

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

Pyinstaller EXE 的 __file__ 是指一个 .py 文件

情况:我的 Python 脚本有一行代码将自身复制到另一个目录

shutil.copyfile(os.path.abspath(__file__), newPath)
Run Code Online (Sandbox Code Playgroud)

问题:脚本然后被编译成一个 EXE 并运行。给出的错误如下:

FileNotFoundError: No such file or Directory: "C:\Path\To\EXE\script.py"
Run Code Online (Sandbox Code Playgroud)

如您所见,EXE 正在寻找.py自己的版本(即未编译版本)

问题:是否还有另一个 Python 命令仍然可以让可执行文件找到自己而不是自己的.py版本?

附加信息:我将尝试仅替换.py.exe并查看它是否有效——如果我更改可执行文件的名称,程序就会失败。

C:\ > script.exe
#Works as expected

C:\ > ren script.exe program.exe
C:\ > program.exe
FileNotFoundError: No such file or directory: "C:\script.py"
Run Code Online (Sandbox Code Playgroud)

python executable pyinstaller python-3.x

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

使 SQLite 更快地运行 SELECT

情况:我的 SQLite 数据库 (~300MB) 的一个表中有大约 4000 万行、3 列无组织数据。我的数据示例如下:

|  filehash  |  filename  |  filesize  |
|------------|------------|------------|
|   hash111  |    fileA   |    100     |
|   hash222  |    fileB   |    250     |
|   hash333  |    fileC   |    380     |
|   hash111  |    fileD   |    250     |  #Hash collision with fileA
|   hash444  |    fileE   |    520     |
|     ...    |     ...    |    ...     |
Run Code Online (Sandbox Code Playgroud)

问题:单个SELECT语句可能需要 3 到 5 秒。我正在运行的应用程序需要很快。耗时 3 到 5 秒的单个查询太长了。

#calculates hash
md5hash = hasher(filename)
#I need …
Run Code Online (Sandbox Code Playgroud)

sqlite performance python-2.7 raspberry-pi3

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

哪个更好 - execute(INSERT) 或 executemany(INSERT)

情况:需要在 SQLite 数据库中插入相当多的数据。

问题:我们可以使用两条语句来插入数据 -

data = [("111", "222", "333"), ("AAA", "BBB", "CCC"), ("XXX", "YYY", "ZZZ")]

#method1
for item in data:
    cursor.execute("INSERT INTO table(value1, value2, value3) VALUES (?,?,?)", item)
    conn.commit()

#method2
cursor.execute("INSERT INTO table(value1, value2, value3) VALUES(?,?,?)", data)
conn.commit()
Run Code Online (Sandbox Code Playgroud)

问题:如果忽略速度,从编程的角度来看,哪种做法更好?如果可能,还要解释原因。

python sqlite pysqlite python-3.x

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