我在转换 .exe 文件时遇到问题。它没有找到我的 Excel 文件。
我有以下代码
import pandas as pd
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
#Load data
data = pd.read_excel("data.xlsx")
...
Run Code Online (Sandbox Code Playgroud)
代码的第二部分(abspath,dname,os.chdir(dname)是设置.py文件位置的路径。因此,将.py文件和.xlsx文件放在一起总是让它找到它,无论如何那个地点。
然后我使用将其转换为 .exe
pyinstaller --hidden-import=pandas --onefile script.py
Run Code Online (Sandbox Code Playgroud)
为了使我的 script.py 工作,我必须将 data.xlsx 文件与 script.py 文件放在同一文件夹中。
我假设将 .exe 文件从 dir 文件夹拖到与 .xlsx 文件相同的位置将使其运行,但运行 .exe 文件会返回以下错误:
无法执行脚本脚本。目录中没有这样的文件“data.xlsx”。
无论“.exe+.xlsx”文件夹的位置如何,如何让它读取我的 Excel 文件?
我的大学教授问我如何识别文件是.exe使用 C 还是 C++ 创建的?
有谁知道如何识别吗?
我有一个命令行可执行文件,它可以改变我想从程序中使用的文件中的某些位.是否可以创建自己的可执行文件使用此工具并只分发一个可执行文件?
[编辑]澄清:
命令行工具采用偏移量和一些位,并在给定文件中更改此偏移处的位.所以我想为一个应用程序创建一个修补程序,将特定的位更改为一个特定的值,所以我能做的就是编写类似批处理文件的东西,但是我想创建一个执行它的可执行文件,即将工具嵌入到一个使用特定值调用它的包装器程序.
我可以在(windows)c\c ++中编写包装器,asm但是没有.net请.
我想知道在运行该文件之前或之后,在.exe文件上生成校验和时是否会得到不同的结果.我更关心常见的做法(例如生成像firefox.exe这样的热门应用程序的SHA哈希),而不是边界情况,但两者都很有趣.谢谢.
如标题中所述,我想在.NET中开发一个Windows窗体应用程序,它能够在运行时创建另一个.NET命令行或Windows窗体可执行文件,并让我将其保存到磁盘.
如果有可能以及如何进行,您有什么想法吗?
#Region"更多信息"
我想创建一个表单,用户可以在其中定义可执行文件的路径和图标/图像的路径.
当他/她按下构建按钮时,程序会创建一个新的.NET exe,用户可以将其保存到磁盘.
此exe的图标是在创建期间选择的图标,启动时它会启动在创建和退出期间选择的过程.
实际上是一个小型发射器
#EndRegion
非常感谢,Marco
我目前正在尝试将可执行控制台应用程序的输出转换为另一个.确切地说,我正在尝试做一些概述:
我有一个我无法编辑的可执行文件,也没有看到它的代码.它在执行时将一些(相当多的是诚实的)行写入控制台.
现在我想编写另一个可执行文件来启动上面的那个并读取它写的东西.
对我来说似乎很简单,所以我开始编码,但结果却出现了一条错误消息 StandardOut has not been redirected or the process hasn't started yet.
我尝试使用这种结构(C#):
Process MyApp = Process.Start(@"C:\some\dirs\foo.exe", "someargs");
MyApp.Start();
StreamReader _Out = MyApp.StandardOutput;
string _Line = "";
while ((_Line = _Out.ReadLine()) != null)
Console.WriteLine("Read: " + _Line);
MyApp.Close();
Run Code Online (Sandbox Code Playgroud)
我可以打开可执行文件,它也可以打开内部的可执行文件,但是一旦读取返回的值,应用程序就会崩溃.
我究竟做错了什么?!
Heey Guys,
所以我有一个连接数据库的C#解决方案,我想将这个解决方案部署到一个.Exe文件中.像NotePad一样,使我能够发送exe文件,然后双击它,它开始运行..
我怎么能这样做?
我有一个我编写的Perl脚本,可以使用pp(PAR)编译它.我很好奇是否可以制作一个完全可移植的单个可执行文件(在linux和windows上运行)或者我必须创建2个可执行文件(一个用于linux,一个用于windows).我对使用perlapp或perl2exe的选项不感兴趣,我在这里严格寻找PAR/pp选项.此外,我并不是在寻找PAR能够创建.par文件,并且已经为操作系统预先部署了一个存根Perl环境.
编辑:
当针对在我的linux系统上构建的二进制文件运行file命令时,它显示二进制文件具有以下类型:
% file my_app
my_app: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped.
Run Code Online (Sandbox Code Playgroud)
这似乎表明它只能在linux系统上运行.
如何在Java应用程序中嵌入二进制文件(可执行,准确)?有没有办法在编译期间读取文件,或者我是否必须将十六进制转储复制到应用程序的源代码中?
我最近正在研究一些JIT编译器。据我所知,JIT是一种将一些脚本语言代码即时编译为本地代码的技术(在执行之前)。正如我想象的那样,这种编译器的内部结构使我发现,必须在生成的本机代码所在的位置上放置一段动态分配的缓冲区。但是然后我们需要一种方法来从保存数据的缓冲区内开始运行代码。我的意思是,char[]由于安全隐患,操作系统不能阻止您这样做,因此您不能只是将一些代码放入a 然后跳入执行。必须有某种方法将缓冲区标记为可执行文件。考虑以下天真的方法:
#include <stdlib.h>
void *jit_some_native_code(void) {
void *code_segment = malloc(1024);
/*
* bla bla bla...
* Generate code into this code_segment.
*/
return code_segment;
}
int main(void) {
void *code = jit_some_native_code();
/*
* How can I start executing instruction in code?
*/
typedef void (*func_ptr_t)(void);
/*
* This won't work. OS bans you doing so.
*/
((func_ptr_t)code)();
}
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上,该代码将运行,但会以状态代码26退出。鉴于C的类型不安全特性,该代码可以编译,但对于C ++,编译器只会使您停止。这是否意味着JIT必须绕过编译器以及设置可执行标志?
编辑:此外mprotect,如果使用mmap,还可以指定页面映射权限:
PROT_EXEC Pages may be executed.
PROT_READ Pages may be read. …Run Code Online (Sandbox Code Playgroud) executable ×10
exe ×3
c ×2
c# ×2
c++ ×2
.net ×1
assembly ×1
command-line ×1
compilation ×1
deployment ×1
hash ×1
jar ×1
java ×1
jit ×1
par ×1
perl ×1
pyinstaller ×1
python ×1
redirect ×1
runtime ×1