文件已创建,但函数WriteFile无法在文件中写入,我需要在不在main中的函数中创建文件。
import psycopg2
import csv
import time
import datetime
import pandas as pd
import sys
reload (sys)
sys.setdefaultencoding('utf8')
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
print('script sterts')
connect=psycopg2.connect(dbname='db',host='***********',port=5439,user='****',password='********')
cur=connect.cursor()
print('begin execute')
up_pgm_list = pd.read_csv ('/prod/user/home/dqe933/FNI.csv')
with open('/prod/user/home/dqe933/FNI.csv', 'Ur') as csvfile:
spamreader=csv.reader(csvfile,delimiter=',')
for row in spamreader:
cur.execute("""INSERT INTO UD_INTERIM.dqe933_fni_new(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,
col12,col13,col14,col15,col16,col17,col18,col19,col20,col21,col22,col23,col24,col25,col26,col27,col28)values(?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)""",*row)
print('complete')`enter code here`
答案 0 :(得分:0)
如Eugene Sh所述,您不会将指针保留在您创建的文件中。这解决了它:
#include <stdio.h>
#include <stdlib.h>
FILE *CreateFile(void){
FILE *file = fopen("file.txt","w");
if(file == NULL){
printf("Error : Could not create the file");
exit(1);
}
return file;
}
void WriteFile(FILE *file){
fprintf(file, "Hello !");
}
int main(void)
{
FILE *file = CreateFile();
WriteFile(file);
fclose(file);
return 0;
}
或者,如果要将变量file
从main发送到函数中,请使用双指针:
#include <stdio.h>
#include <stdlib.h>
void CreateFile(FILE **file){
*file = fopen("file.txt","w");
if(*file == NULL){
printf("Error : Could not create the file");
}
}
void WriteFile(FILE *file){
fprintf(file, "Hello !");
}
int main(void)
{
FILE *file = NULL;
CreateFile(&file);
WriteFile(file);
fclose(file);
return 0;
}
答案 1 :(得分:0)
问题不在于文件,而是你对指针的使用。在C中,函数参数按值传递:这意味着在您调用CreateFile(file);
时代码中,您提供的值为file
,即NULL
。
你有两种方法可以解决这个问题,你可以使用双指针:
void CreateFile(FILE **file);
调用这样的函数:
FILE *file;
CreateFile(&file);
或者您可以return
来自CreateFile()
:
FILE *CreateFile(void);
FILE *file = CreateFile();
(编辑:我没有看到@HansPetterTaugbølKragset的回答......)