所以我正在编写这个程序,它使用open()创建读取文件.当我尝试运行程序时给出了错误:ValueError:关闭文件的I/O操作(第18行).
在我在这个主题上看到的每个问题中,问题总是与缩进有关.IE尝试操作未在同一循环中打开的文件.我的蟒蛇有点生疏,但缩进对我来说很好看.
我希望有人可以快速查看,让我知道缩进是否错误,或者如果其他东西可能导致错误?代码(注释错误):
sourceFile = 'test.html'
serviceTarget = "Plumbers & HVAC Experts"
cityTarget = "NJ"
services = {"Plumbers", "Air Conditioning Experts", "Drain Cleaning Experts"}
cities = {"Westfield", "Scotch Plains", "Clark"}
serviceNames = {"Plumbers":"plumbers", "Air Conditioning Experts":"ac", "Drain Cleaning Experts":"drain"}
totalPages = len(services)*len(cities)
for serviceRep in services:
for cityRep in cities:
outFileName = cityRep + " " + serviceNames[serviceRep] + ".html"
outFileName = outFileName.replace(" ", "_");
print("Writing " + outFileName + "...")
infile = open(sourceFile)
outfile = open(outFileName, 'w')
for line …Run Code Online (Sandbox Code Playgroud) 我有这个Java代码,它应该读取0.5M文件并在删除一些无用的信息后写(我正在使用安然电子邮件数据集)
public void getInboxFiles(File directory){
File[] usersFolders;
File[] userFolders;
File[] inboxFiles;
usersFolders = directory.listFiles();
for(File temp:usersFolders){
userFolders = temp.listFiles();
for(File temp2:userFolders){
inboxFiles = temp2.listFiles();
for(File tmp3:inboxFiles){
if(tmp3.isDirectory())
continue;
readNPrase(tmp3, new File("/media/ADATA SH12/datasets/parsedEnron/"+temp.getName()+tmp3.getName()+".txt"));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
函数readNParse是:
public void readNPrase(File in,File out){
BufferedReader br=null;
BufferedWriter bw =null;
try{
br = new BufferedReader(new FileReader(in));
bw= new BufferedWriter(new FileWriter(out));
boolean messageContent = false;
String line = null;
while((line = br.readLine()) != null){
if(line.trim().equals(""))
messageContent = true;
if(messageContent && !isHeader(line) && !line.trim().equals("")){
bw.write(line); …Run Code Online (Sandbox Code Playgroud) 我想保存一些生成的图像.
我困惑的部分是如何处理保存文件的路径.
在本地运行时(在VS中),图像可以保存在c:\ images中,但在服务器上,id可能希望将它们保存在root-of-webdir\images中
我需要web.config中的可配置路径吗?在两种情况下如何读取图像的url路径?
我有一个文本文件,我在第一个和最后的名字读取大小为20的字符数组.我正在创建一个结构数组,其中包含"人民"的信息.文本文件如下所示:
John Robbins
Teresa Jones
Run Code Online (Sandbox Code Playgroud)
我的结构定义如下:
struct people {
char name[20];
};
Run Code Online (Sandbox Code Playgroud)
人员宣言结构:
struct people *persons[2];
Run Code Online (Sandbox Code Playgroud)
声明新结构后,我使用以下代码读取名称:
for(i=0; i<2; i++)
{
fscanf(dp, "%[^\n]s", &persons[i].name[20]);
}
Run Code Online (Sandbox Code Playgroud)
但是,一旦我将名称输出到控制台,我收到以下内容:
hn Robbins
sa Jones
Run Code Online (Sandbox Code Playgroud)
我做了大量研究,找不到解决这个问题的方法.有没有人遇到过这个问题?
fstream file(Fname,ios::in|ios::binary);
pharmacy_personnel ob;
while(file.read((char*)ob,sizeof(ob)))
{
total++;
}
Run Code Online (Sandbox Code Playgroud)
这只是我代码的一小部分.它给出了一个错误:
"从"pharmacy_personnel"到"char*"不存在合适的转换功能"
请告诉我哪里出错了.
我写了这样一个应用程序(它仍在进行中......).这是日志:
10-02 13:38:18.714: D/AndroidRuntime(637): Shutting down VM
10-02 13:38:18.714: W/dalvikvm(637): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
10-02 13:38:18.734: E/AndroidRuntime(637): FATAL EXCEPTION: main
10-02 13:38:18.734: E/AndroidRuntime(637): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test1/com.example.test1.MainActivity}: java.lang.NullPointerException
10-02 13:38:18.734: E/AndroidRuntime(637): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-02 13:38:18.734: E/AndroidRuntime(637): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-02 13:38:18.734: E/AndroidRuntime(637): at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-02 13:38:18.734: E/AndroidRuntime(637): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-02 13:38:18.734: E/AndroidRuntime(637): at android.os.Handler.dispatchMessage(Handler.java:99)
10-02 13:38:18.734: E/AndroidRuntime(637): at android.os.Looper.loop(Looper.java:137)
10-02 13:38:18.734: E/AndroidRuntime(637): at android.app.ActivityThread.main(ActivityThread.java:4745)
10-02 13:38:18.734: E/AndroidRuntime(637): at java.lang.reflect.Method.invokeNative(Native Method)
10-02 13:38:18.734: E/AndroidRuntime(637): at java.lang.reflect.Method.invoke(Method.java:511)
10-02 …Run Code Online (Sandbox Code Playgroud) 我的任务是制作这个节目.一个程序,可以读取tests.txt,显示所有分数以及分数的平均值.该程序还必须使用循环.
这是我到目前为止:
def main():
scorefile = open('test.txt', 'r')
test1 = scorefile.readline()
test2 = scorefile.readline()
test3 = scorefile.readline()
test4 = scorefile.readline()
test5 = scorefile.readline()
scorefile.close()
print(test1, test2, test3, test4, test5)
total = (test1 + test2 + test3+ test4 + test5) / 5.0
print('The average test score is:', total)
main()
Run Code Online (Sandbox Code Playgroud)
我test.txt已用这些数字写入文件:
95
87
79
91
86
Run Code Online (Sandbox Code Playgroud) 我正在使用文件IO操作将我的应用程序日志写入文本文件.一旦用户启动应用程序,我就会记录详细信息(例如谁发布,日期时间,机器名称等).我有点担心,因为写入文件的文本没有反映,除非它遇到file.Close().如果我使用file.Close()方法,我无法再将日志写入文件,因为它说"无法写入已关闭的TextWriter"
有没有办法处理这种情况.我知道logutil符合我的要求,但不幸的是我无法使用它.
我有一个大型的二进制文件,我想读入并使用struct.unpack()解压缩该文件包含多个行,每行长2957个字节.我使用以下代码读入文件:
with open("bin_file", "rb") as f:
line = f.read(2957)
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么,尺寸返回:
import sys
sys.getsizeof(line)
Run Code Online (Sandbox Code Playgroud)
不等于2957(在我的情况下是2978)?
我在Perl .pl文件中有以下代码。您是否认为此代码有任何问题(我不明白它的工作方式,因为第二行中有一个“ |”字符,而后面没有命令)
while ( $temp ne "" ) {
open( PS, "ps -ef | grep deploy.sh | grep ssh | grep -v grep|" );
$temp = <PS>;
close(PS);
print "The Deploy scripts are still running. Now sleeping 20\n";
sleep 20;
}
Run Code Online (Sandbox Code Playgroud)