情况:我需要使用最 Pythonic 的方式找到任何操作系统的顶级 [root] 目录,而不需要系统调用。
问题:虽然我可以使用诸如 之类的东西检查操作系统if "Windows" in platform.system(),但我不能太确定驱动器号是否总是C:\或/(后者不太可能)。我也无法确定是否只有 Windows 和 *NIX 需要编目。
问题:有没有办法获取任何操作系统的顶级目录?最好使用该os模块,因为我已经在使用它了。
情况:要下载的文件是一个大文件(>100MB)。这需要相当长的时间,尤其是在互联网连接速度较慢的情况下。
问题:但是,我只需要文件头(前 512 个字节),它将决定是否需要下载整个文件。
问题:有没有办法只下载文件的前 512 个字节?
附加信息:目前下载是使用 Python2.7 中的 urllib.urlretrieve 完成的
假设我有一个班级学生的向量,但问题的要求表明我不能在构造函数中将等级放在一起,所以我将不得不解决它.
我有可能在一个向量槽中有两个值吗?
例如,Student类和字符串成绩是我的参数.
vector<Student*, string> Students;
Run Code Online (Sandbox Code Playgroud)
所以,在一天结束的时候,如果我对矢量进行测试,我应该在一个插槽中获得学生和成绩.
这有用吗?如果是这样,我如何push_back值?
否则,还有另一种方法吗?
情况:将 fileA 中的字符串与 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:我也愿意接受我可以使用的其他方法或模块(即:线程/并行处理)——速度是这里的关键。
情况:我们知道下面将检查脚本是否已被直接调用.
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 脚本有一行代码将自身复制到另一个目录
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) 情况:我的 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 数据库中插入相当多的数据。
问题:我们可以使用两条语句来插入数据 -
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 ×6
python-2.7 ×3
python-3.x ×3
sqlite ×2
c++ ×1
comparison ×1
download ×1
executable ×1
performance ×1
pyinstaller ×1
pysqlite ×1
python-os ×1
string ×1
urllib ×1
urlretrieve ×1
vector ×1