Wayne Watson wrote:
Ok, I'm back after a three day trip. You are correct about the use of
pronouns and a few misplaced words. I should have reread what I wrote.
I had described this in better detail elsewhere, and followed that
description with the request here probably thinking back to it. I
think I was getting a bit weary of trying to find an answer. Try t;his.
Folder1
track1.py
data1.txt
data2.txt
data3.txt
Folder2
track1.py
dset1.txt
dset2.txt
...
dset8.txt
So how do you know this is the structure? If there really are shortcuts
or symbol links, why aren't you showing them? Did you do a DIR from
the command line, to see what's there? Or are you looking in Explorer,
which doesn't even show file extensions by default, and just guessing
what's where ?
data and dset files have the same record formats. track1.py was copied
into Folder2 with ctrl-c + ctrl-v.
Those keys don't work from a command prompt. From there, you'd use COPY
or something similar. So I have to guess you were in an Explorer
window, pointing to Folder 1, and you selected the python file, and
pressed Ctrl-C. Then you navigated to Folder 2, and pressed Ctrl-V. If
you did, Windows 7 wouldn't have created any kind of special file, any
more than earlier ones did. Chances are you actually did something
else. For example, you might have used a right-click drag, and answered
"create shortcut" when it asked what you wanted to do. Or perhaps you
did drag/drop with some ctrl-or alt-key modifier.
Anyway, you need to be more explicit about what you did. If you had
used a command prompt, you could at least have pasted the things you
tried directly to your message, so we wouldn't have so much guessing to do.
When I run track1.py from folder1, it clearly has examined the
data.txt files.
And how are you running track1.py ? And how do you really know that's
what ran? The code you posted would display a string, then the window
would immediately go away, so you couldn't read it anyway.
If I run the copy of track1.py in folder2, it clearly operates on
folder1 (one) data.txt files. This should not be.
If I look at the properties of track1.py in folder2 (two), it is
pointing back to the program in folder1 (one).
Exactly what do you mean by "pointing back" ? If you're getting icons
in your Explorer view, is there a little arrow in the corner? When you
did the properties, did you see a tab labeled "shortcut" ?
I do not believe I've experienced this sort of linkage in any WinOS
before. I believed I confirmed that the same behavior occurs using cmd
prompt.
Shortcuts have been in Windows for at least 20 years. But you still
haven't given enough clues about what you're doing.
I'll now head for Alan's reply.
On 2/23/2010 5:35 PM, Dave Angel wrote:
Wayne Watson wrote:
A few days ago I posted a message titled ""Two" Card Monty. The
problem I mentioned looks legitimate, and remains puzzling. I've
probed this in a newsgroup, and no one has an explanation that fits.
My claim is that if one creates a program in a folder that reads a
file in the folder it ... then copies it to another folder, it will
read the data file in the first folder, and not a changed file in
the new folder. I'd appreciate it if some w7 users could try the
program below, and let me know what they find. I'm using IDLE in
Win7 with Py 2.5.
My experience is that if one checks the properties of the copied
file, it will point to the original py file and execute it and not
the copy. If win7 is the culprit, I would think this is a somewhat
serious problem. It may be the sample program is not representative
of the larger program that has me stuck. If necessary I can provide
it. It uses common modules. (Could this be something like the
namespace usage of variables that share a common value?)
# Test program. Examine strange link in Python under Win7
# when copying py file to another folder.
# Call the program vefifywin7.py
# To verify my situation use IDLE, save and run this program there.
# Put this program into a folder along with a data file
# called verify.txt. Create a single text line with a few characters
in it
# Run this program and note the output
# Copy the program and txt file to another folder
# Change the contents of the txt file
# Run it again, and see if the output is the same as in the other
folder
track_file = open("verify.txt")
aline = track_file.readline();
print aline
track_file.close()
I find your English is very confusing. Instead of using so many
pronouns with confusing antecedents, try being explicit.
>My claim is that if one creates a program in a folder that reads a
file in the folder
Why not say that you created a program and a data file in the same
folder, and had the program read the data file?
>...in the folder it and then copies it to another folder
That first 'it' makes no sense, and the second 'it' probably is meant
to be "them". And who is it that does this copying? And using what
method?
> ... it will read the data file in the first folder
Who will read the data file? The first program, the second, or maybe
the operator?
About now, I have to give up. I'm guessing that the last four lines
of your message were intended to be the entire program, and that that
same program is stored in two different folders, along with data
files having the same name but different first lines. When you run
one of these programs it prints the wrong version of the line.
You have lots of variables here, Python version, program contents,
Idle, Windows version. Windows 7 doesn't do any mysterious
"linking," so I'd stop making that your working hypothesis. Your
problem is most likely the value of current directory ( os.getcwd()
). And that's set according to at least three different rules,
depending on what program launches Python. If you insist on using
Idle to launch it, then you'll have to convince someone who uses Idle
to tell you its quirks. Most likely it has a separate menu for the
starting directory than for the script name & location. But if
you're willing to use the command line, then I could probably help,
once you get a clear statement of the problem. By default, CMD.EXE
uses the current directory as part of its prompt, and that's the
current directory Python will start in.
But the first things to do are probably to print out the value of
os.getcwd(), and to add a slightly different print in each version of
the program so you know which one is running.
Incidentally, I'd avoid ever opening a data file in "the current
directory." If I felt it important to use the current directory as
an implied parameter to the program, I'd save it in a string, and
build the full path to the desired file using os.path.join() or
equivalent.
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor