我正在尝试使用以下代码读取CSV文件以将其上载到数据库表:
FtpWebRequest reqFTP;
try
{
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath + fileName));
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
int count=0;
StringBuilder sb = new StringBuilder();
//GET THE FTP RESPONSE
using (System.Net.WebResponse tmpRes = reqFTP.GetResponse())
//^^^^^^^^^^^^^^ Error is on this line ^^^^^^^^^^^^^^
{
...
}
}
当文件名包含空格(有时在调试时显示为%20)时,我收到以下错误:
远程服务器返回错误:(550)文件不可用(例如,文件没有>找到,没有访问权限。)
如果文件名不包含空格或%20,则可以正常读取。
该任务涉及读取文件解析内容,将数据保存在数据库中,然后将文件移动到另一个文件夹中。
答案 0 :(得分:0)
每当您收集或设置文件名时,请尝试以下操作:
if (filename.Contains("%20"))
{
filename= filename.Replace("%20", ' ');
}
如果您计划之后移动文件,请确保在移动之前完成相反的操作。在你的情况下:
s = """MTH|lettersandnumbersHST|lettersandnumbersENG|lettersandnumbers
MTH|lettersandnumbersHST|lettersandnumbersENG|lettersandnumbers
MTH|lettersandnumbersHST|"""
r= re.compile("([A-Z]+\|[0-9a-z]+|[A-Z]+\|)",)
for line in s.splitlines(True):
print("\n".join(r.findall(line)))
这个想法可以扩展为所有不可接受的字符,如“#”,“”或“\”等等。